V1.7 ¿Cómo usar las tablas MySQL en Prestashop?

jaime042

New member
XNullUser
Joined
Sep 26, 2021
Messages
20
Reaction score
6
Points
3
NullCash
21

Muchas veces necesitaremos trabajar con los datos de la base de datos que tenemos en la página web. ¿Cómo lo haremos?​

Para empezar, debemos tener en cuenta que prestashop tiene sus propias funciones para ejecutar consultas en Bases de Datos. Tiene las funciones de seleccionar (executeS y getRow), actualizar (update), insertar (insert) y eliminar (delete) y ejecutar SQL directamente (execute). Aquí las conocerás:


Db::getInstance()->executeS()​

El executeS() ejecuta un SELECT. Es la función más simple que tiene el Db de prestashop. Un ejemplo sería

Si queremos seleccionar todo de la tabla ps_product, sería así:

Db::getInstance()->executeS('SELECT * FROM '._DB_PREFIX_.'product');
Como verás no he puesto ps_product, sino ‘._DB_PREFIX_.’product. De esta manera Prestashop pone automáticamente el prefijo a la tabla. Muy recomendable utilizarlo por si en un futuro se cambia el prefijo de las tablas.


Db::getInstance()->getRow()​

La función getRow() de prestashop sirve para hacer un select pero sólo se cogerá la primera línea. Es decir, le pone automáticamente un LIMIT 1 al final de la función.

Si usamos el mismo caso que el anterior sería así:

Db::getInstance()->getRow('SELECT * FROM '._DB_PREFIX_.'product');
A diferencia del anterior, en este caso sólo nos cogería el primer producto. Esto es muy util para coger datos indicando cuál es el id. De esta manera:

$id_product = 1; // Le pasarías la variable id_product
Db::getInstance()->getRow('
SELECT * FROM '.DB_PREFIX.'product
WHERE id_product = '.(int)$id_product
);

Db::getInstance()->insert()​

El insert() nos sirve para insertar datos en las tablas. Con los siguientes parámetros:

Db::getInstance()->insert(nombre_tabla, array(columna => datos));

Por ejemplo, si queremos insertar en la tabla ps_nombre_tabla los valores ‘id_tabla’, ‘nombre’, ‘edad’ sería el siguiente formato:

Db::getInstance()->insert('nombre_tabla', array('id_tabla' => 1, 'nombre' => 'UriMarti', 'edad' => 29));
Como véis se inserta en la tabla prefijo_nombre_tabla los datos en forma de array. Asignamos a la id_tabla, el número 1, al nombre UriMarti i a la edad 29. Para hacerlo más limpio, recomiendo poner los datos en un array fuera de la función. Cuestión de limpieza dentro del código. De esta manera:

$insert = array(
'id_tabla' => 1,
'nombre' => 'UriMarti',
'edad' => 29
);
Db::getInstance()->insert('nombre_tabla', $insert);

part 1​

 
Top