Metodos Raw

Para añadir consultas tipo Raw  en Eloquent contamos con algunos métodos muy útiles, aquí muestro  ejemplos con tres  de ellos, whereRaw, havinRaw y orderByRaw

 // whereRaw
$orders = DB::table('orders')
    ->whereRaw('price > IF(state = "TX", ?, 100)', [200])
    ->get();

// havingRaw
Product::groupBy('category_id')->havingRaw('COUNT(*) > 1')->get();

// orderByRaw
User::where('created_at', '>', '2016-01-01')
  ->orderByRaw('(updated_at - created_at) desc')
  ->get();

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……

Estructura Prestashop

Analizando un poco la estructura de Prestashop, como he tenido que volver a hacer hace unos días, y con un poco mas de tiempo, escribiré un poquito como esta conformada esta, en función de que alguien interesado pueda entender mejor como funciona.

Prestashop funciona bajo el sistema  modelo, vista, controlador,  y por tanto tiene muy bien estructurado la separación lógica de estos tres componentes.

Los archivos con la extensión tpl, se encargan de las vistas, Smarty es su gestor de base de datos y están los modulos que ejecutan acciones complejas dentro del Framework.

Prestashop está orientado a objetos, o al menos lo simula con bastante decencia, por ello todos sus módulos actúan como objetos y extienden de diferentes clases, además poseen un hook del cual cuelgan. Los modulos poseen casi todos una vista y un controlador, del cual extienden funcionalidades.

Cuando Prestashop se instala, se instalan un conjunto de módulos básicos y luego cada tema o plantilla incorporara, los suyos propios que tendrán prioridad sobre los del sistema si llegan a coincidir.

Por tanto veremos que dentro de cada módulo, la lógica está representada por el archivo .php, con el nombre del modulo, y la vista por el archivo con el nombre del modulo y la extensión .tpl., en algunos casos podría tener un archivo index, tambien

El  core de Prestashop, se divide a su vez en una estructura de carpetas, bastante intuitiva,  las más importantes para conocer y que podríamos tener que tocar son classes ,config, themes, override, modules, tools y translation.

Los cambios más  drásticos seguramente serán aquellos que realicemos en modulos y themes, pero los que hagamos en los archivos php dentro de los módulos son los que más cuidado requieren .

Los cambios en la lógica deben hacerse en el nombredelmodulo.php. Debo decir que Prestashop asimila perfectamente php nativo, por tanto las modificaciones no requieren mucho más que conocer este lenguaje, pero cuidado, porque deberán luego adecuar también los efectos de estas modificaciones en la vista si fuera necesario, por diferentes vías, algunas de ellas por ejemplo reestructurar las imágenes o limpiar la cache no requieren el uso de código  y pueden aprovecharse para ello,  las herramientas que el mismo Prestashop ofrece, otras como la modificación de traducciones,  o la corrección del código de las vistas si exigirá conocimientos de javascript, html y css

Una herramienta importante que nos da el framework es el override, con ella los cambios que hagamos, lo guardaremos  allí, eso no facilita que al actualizar a nuevas versiones, estos no se sobrescribirán y nuestras modificaciones serán protegidas.

Cambios de versiones ha habido muchos, Prestashop tiene una comunidad de desarrolladores muy activa, pero la versión 1,6 sigue siendo la mejor, mas estable, menos bugs y mejor soportada.

A pesar de todas la ventajas que la versión 1.7 ofrece no acaba de brindar la suficiente confianza a los usuarios, yo por mi parte sigo recomendando que quien tenga la versión 1.6 no la cambie.

Prestashop es potente y posee muchas soluciones a mano, que podemos aprovechar. Mi sugerencias sobre donde hacer adecuaciones, para personalizarlo por ejemplo, son estas:

La manera  mas sencilla es tocar solo los archivos dentro de la carpeta modules. Sii no es necesario tocar el php, se pueden centrar las modificaciones en los archivos tpl. Importante decir que estos mezclan html con variables y código php que se encierra entre corchetes, hay que estudiar conocer la variables, lo cual no es demasiado difícil y atender a los archivos que poseen texto entre comillas simples, estos son textos que aparecen en la plantilla y que tendrán también traducción , por tanto si se cambian, se deberá buscar en el archivo de traducciones y cambiarlo.

Prestashop ofrece una herramienta para esto,  en el  Administrador de la tienda en Herramientas/Traducciones, o  se puede hacer también hurgando en el código directamente, en la carpeta idiomas.

También ser pueden modificar la estructura de los mails, esto se logra en los archivos dentro de la carpeta mails, editándolos fácilmente.

La modificación de los temas o plantillas se puede hacer por varias vías, una es  tomar un tema de internet:  los hay buenos y malos, y de pago y gratis. Los temas se instalan en la  carpeta “themes”.  

La otra  y es la que yo recomiendo que si no lo tienen claro,  se crea una plantilla nueva a partir de la  que trae Prestashop por defecto que en la versión 1.6 esta muy bien y  mejorarla.

El mismo prestashop permite crear un nuevo tema desde su propio administrador en el gestor de temas, basta con poner un  nombre nuevo y decirle que toma como base el tema default,  y seleccionar los módulos que heredara de el,

La ventaja de hacer esto es que es una plantilla que funcionara al 100%, cosa que no sucede a veces con las que hay en la red.

A partir de aquí modificarla será ya mas fácil, con las herramientas de cualquier desarrollador de frontend, pero con las herramientas de desarrollo de Chrome y un buen editor y la conexión a FTP, estará hecho todo.

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

…., si avanzo sígueme, si me detengo empújame, si retrocedo mátame…….

El uso del método Chunk()

Chunk es un método que ofrece Laravel para trabajar con colecciones. Su potencia es realmente impactante, a la hora de operar con grandes datasets, ya que nos permite separar en trozos la cantidad de datos con los que trabajar

Si en Eloquent para obtener todos los registros de un modelo y mostrarlos en nuestro Blade,  hacemos algo asi:

$tareas = Tarea::all();
foreach ($tareas as $tarea) {
    // ...

Con Chunk haríamos esto:

Tareas::chunk(100, function ($tareas) {
    foreach ($tareas as $tarea) {
        // ...
    }
});

Y listo, esto es todo.

Espero modestamente que este artículo, sirva de ayuda a alguien.

Gracias.

Subir montañas hermana hombres……