Metodos Raw

laravel

Para añadir consultas tipo Raw  en Eloquent, contamos con algunos métodos muy útiles. Aquí muestro  ejemplos con tres  metodos Raw ( 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.

Más sobre Laravel en mi blog

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

Gracias.

Subir montañas hermana hombres……

Estructura Prestashop

logo prestashop

Analizando la estructura de Prestashop, el cual tuve que regresar, hace unos días, y con más de tiempo disponible, explicaré 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.

Orientado a objetos

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

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.

Debido a su utilidad y gran aceptación, y ser de código abierto, posee una vasta red de colaboradores.

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.

Override

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.

Plantillas

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…….

Calcular el porcentaje de una columna en pandas

logo python

Veamos como  calcular el porcentaje de una columna en Pandas, para lo cual usaremos sus propia función sum()

Como sabemos Pandas trabaja con dataframes o marcos de datos y también queda claro, que el porcentaje se obtiene dividiendo  el valor total entre  la suma de todos los valores y luego multiplicando ese resultado por 100.

Lo que hacemos, no es otra cosa que aplicar este mismo procedimiento a la columna que deseamos analizar.

Primero sumaremos toda la columna con sum(), que es el método que se emplea para sumar en Pandas.

La sintaxis seria esta:

df [porcentaje] =(df ['resultado'] / df ['column_a_sumar'].sum()) * 100

Otros post sobre Python

Viéndolo en un ejemplo practico seria esto:

import pandas as pd 
import numpy as np 

#tenemos una matriz accesorios con dos columnas (periodos y cantidad)   
accesorios = { 
     'periodos': ['periodo_1', 'periodo_2', 'periodo_3', 
             'periodo_4', 'periodo_5', 'periodo_6', 
             'periodo_7'], 
     'cantidad': [100, 40, 47, 78, 89, 78, 64]} 

# instanciamos accesorios como un dataframe de pandas,
# y definimos sus columnas
   
accesorios = pd.DataFrame(accesorios,  
                   columns = ['periodos', 
                             'cantidad']) 
# calculamos la columna porcentaje, la cual se añade automaticmente # al dataframe accesorios. Dividimos la cantidad entre la suma de 
# la columna y la multiplicamos por 100
accesorios['porcentaje'] = (accesorios['cantidad'] / 
                  accesorios['cantidad'].sum()) * 100
  
accesorios

Como ven hemos calculado el porcentaje de la columna para saber que magnitud del total representa cada período.

La salida es:

Out[1]:
	periodos	cantidad	porcentaje
0	periodo_1	100	20.161290
1	periodo_2	40	8.064516
2	periodo_3	47	9.475806
3	periodo_4	78	15.725806
4	periodo_5	89	17.943548
5	periodo_6	78	15.725806
6	periodo_7	64	12.903226

Y esto es todo, espero ayudar a alguien con este post.

No discutas nunca con un imbécil, te llevará a su terreno y allí te ganará por experiencia

D.

El uso del método Chunk()

laravel

El método 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

Otros posts sobre Laravel

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……

Translate »