Como no todo queda a la primera o se tenga que modificar por cualquier razón la consulta personalizada, les dejo el ejemplo básico de como modificar una consulta personalizada
Para modificar la consulta creada anteriormente hacemos la siguiente petición de tipo PATH
{
"SqlCode":"sql02",
"SqlName":"listPrices",
"SqlText":"select a.ItemCode
,a.PriceList
,a.Price
,b.ListName
,z.[ItemName]
from [ITM1] a
, [OPLN] b
, [OITM] z
where a.[PriceList] =:listaPrecios
and a.[Price] <>0
AND a.[PriceList] = b.[ListNum]
AND a.[ItemCode] = z.[ItemCode]
",
"ParamList" : "listaPrecios"
}
En el service layer también tenemos la forma para crear nuestras consultas personalizadas, aunque tiene algunas limitaciones pero nos pueden ser muy útiles.
Para ello utilizaremos SQLQueries y el ejemplo básico seria de la siguiente manera
Hacemos la petición POST
https://localhost:50000/b1s/v1/SQLQueries
En el body le metemos el contenido JSON
{
"SqlCode":"sql02",
"SqlName":"listPrices",
"SqlText":"select ItemCode,PriceList
from [ITM1]
where [PriceList] =:listaPrecios ",
"ParamList" : "listaPrecios"
}
Para traer la el catalogo de listas de precios usaremos la siguiente URL en GET
https://localhost:50000/b1s/v1/PriceLists?$select=PriceListNo,PriceListName&$filter=Active eq 'tYES' and substringof('TRIT',PriceListNo) or substringof('TRIT',PriceListName)
Como pueden observar usamos la funcion substringof como el equivalente al like de SQL
Lo que haremos en esta ocasión en hacer la consulta al service layer para usarlo en un Select2 vía AJAX y PHP primera mente usaremos la siguiente petición de tipo GET URL
https://localhost:50000/b1s/v1/Users?$select=InternalKey,UserCode,Group,UserName&$filter=Group eq 'ug_Regular' and substringof('Julio',UserName) or substringof('Julio',UserCode)&$orderby=InternalKey
Como ven usamos la función substringof que seria el equivalente en SQL al like ‘%%’
Quedando mas o menos asi
Ahora transformamos la petición a una función de PHP en la que recibimos la cookie y el filtro para buscar los usuarios
Ahora en el archivo de consulta se usaría de la siguiente forma, hacemos el Login, consultamos, hacemos el Logout, y formamos la cadena JSON de la siguiente forma
Algunas veces en el desarrollo es necesario consumir web Service para los proyectos, como puede ser facturación electrónica mexica, obtener el precio del dólar del DOF ETC .
Existen herramientas ya conocidas para realizar las pruebas como Postman las cuales funcionan muy bien y cuentan con excelentes funciones como la de exportar la petición al lenguaje que estemos utilizando ya sea PHP, C#, Java, Python,Ruby on Rails ETC
Pero como siempre hay alternativas en todo.
Existe una buena alternativa y es una extensión de Visual Studio Code.
Thunder Client es una extensión de cliente Rest API liviana para VS Code, diseñada a mano por Ranga Vadhineni con un enfoque en la simplicidad, el diseño limpio y el almacenamiento local.
Para instalarlo nomas vamos a extensiones buscamos Thunder Client, le damos instalar y listo
Y listo ya podemos hacer pruebas con los webservice
En ciertas ocasiones es necesario correr algunos procesos en nuestro sistema web que demoran un poco mas de tiempo y por la configuración inicial del framework este proceso no finaliza.
Para ello es necesario poder modificar los parámetros de tiempo de ejecución para darle un poco mas de tiempo al programa y finalice correctamente los procesos.
En las primeras versiones de Codeigniter 4 podíamos cambiar el tiempo de ejecución en app/Config/App.php modificando las siguientes variables
/**
* --------------------------------------------------------------------------
* Session Expiration
* --------------------------------------------------------------------------
*
* The number of SECONDS you want the session to last.
* Setting to 0 (zero) means expire when the browser is closed.
*
* @deprecated use Config\Session::$expiration instead.
*/
public int $sessionExpiration = 72000;
/**
* --------------------------------------------------------------------------
* Session Time to Update
* --------------------------------------------------------------------------
*
* How many seconds between CI regenerating the session ID.
*
* @deprecated use Config\Session::$timeToUpdate instead.
*/
public int $sessionTimeToUpdate = 300000;
/**
* --------------------------------------------------------------------------
* CSRF Expire
* --------------------------------------------------------------------------
*
* The number in seconds the token should expire.
*
* @deprecated Use `Config\Security` $expire property instead of using this property.
*/
public int $CSRFExpire = 720000;
Pero ahora en las versiones nuevas tenemos que modificar en el archivo app/Config/Session.php ya las variables son las siguientes:
/**
* --------------------------------------------------------------------------
* Session Expiration
* --------------------------------------------------------------------------
*
* The number of SECONDS you want the session to last.
* Setting to 0 (zero) means expire when the browser is closed.
*/
public int $expiration = 720000;
/**
* --------------------------------------------------------------------------
* Session Time to Update
* --------------------------------------------------------------------------
*
* How many seconds between CI regenerating the session ID.
*/
public int $timeToUpdate = 300000;
Ya con eso podemos alargar el tiempo de ejecucion del sistema, pero vamos a sacrificar que el sistema deje de estar disponible para otra tarea mientras se este ejecutando tal proceso
Una de las ventajas de trabajar en el framework de codeigniter 4 son las migraciones, es decir, en lugar de crear la tabla directamente creamos los archivos de migración y cuando actualicemos los fuentes desde nuestra maquina al servidor basta con correr un php spark migrate y los campos y tablas nuevas se actualizan instantáneamente en servidor de base de datos de nuestro servidor.
En los archivos de base de datos o de migración de de dos tipos que son los siguientes
Migration
Seeds
Los archivos de migración en resumen es para poner tablas y campos nuevos mientras que los archivos seeds son para insertar datos a la tabla, en nuestro caso permisos, menus ETC
Según teníamos entendido que los seeders se ejecutaban también con el comando de php spark migrate, pero al parecer no se ejecuto en el servidor el motivo era por que tenia errores, pero no los mostro el comando.
Lo que se tuvo que hacer fue correr el siguiente comando
php spark db:seed
A continuación nos solicitara el nombre del archivo seed
CodeIgniter v4.5.1 Command Line Tool - Server Time: 2024-06-24 09:19:25 UTC-07:00
Nombre de semilla :
Le ponemos el nombre de la semilla en nuestro caso es nuestro archivo se llama PermissionNotaCreditoSeeder.phpl a clase se llama igual solo que sin la extension .php quedaria de la siguiente forma y le damos enter en caso de que el archivo contenga un error nos los mostrara, en nuestro caso como todo nos salió bien nos arrojo este mensaje
El contenido del archivo seed era el siguiente
<?php
namespace App\Database\Seeds;
use CodeIgniter\Config\Services;
use CodeIgniter\Database\Seeder;
use Myth\Auth\Entities\User;
use Myth\Auth\Models\UserModel;
use julio101290\boilerplate\Models\MenuModel;
class PermissionNotaCreditoSeeder extends Seeder {
/**
* @var Authorize
*/
protected $authorize;
/**
* @var Db
*/
protected $db;
/**
* @var Users
*/
protected $users;
//protected $menu;
public function __construct() {
$this->authorize = Services::authorization();
$this->db = \Config\Database::connect();
$this->users = new UserModel();
}
public function run() {
$this->authorize->createPermission('listaNotaCredito-permission', 'Permiso para la lista de notas de crédito');
$this->authorize->addPermissionToGroup('listaNotaCredito-permission', 'admin');
$this->authorize->addPermissionToUser('listaNotaCredito-permission', 1);
}
}
Para poder correr el fuente de un proyecto hecho en PHP 8.2 se necesita instalar xDebug, a continuación dejaremos los pasos para instalarlo correctamente
Abrimos la consola CMD y escribimos php -i y copiamos y pegamos en el área de texto de la pagina de xdebug y de damos click al boton de analyse my phpinfo() output
Usamos cookies en nuestro sitio web para brindarle la experiencia más relevante recordando sus preferencias y visitas repetidas. Al hacer clic en "Aceptar", acepta el uso de TODAS las cookies.
This website uses cookies to improve your experience while you navigate through the website. Out of these cookies, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may have an effect on your browsing experience.
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.