Utilizando SQL directo


Hasta ahora, hemos aprendido cómo los modelos de datos de Magento y el sistema ORM proporcionan una forma limpia y sencilla para acceder, almacenar y manipular nuestros datos. Antes de saltar esta sección, aprenderemos acerca de los adaptadores de base de datos de Magento, y cómo ejecutar consultas SQL crudas, creo que también es importante que comprendas por qué debes evitar en lo posible usar lo que está a punto de aprender en esta sección.

Magento es un sistema extremadamente complejo, y como hemos aprendido en el capítulo anterior, un framework es impulsado en parte por los acontecimientos; simplemente guardando un producto provocará diferentes eventos, cada uno haciendo una tarea diferente. Todo esto no sucederá si decides crear simplemente una consulta y actualizar un producto directamente. Así que, como desarrolladores, tenemos que ser extremadamente cuidadoso y estar seguros de que hay una razón justificable para salir fuera el ORM.

Dicho esto, por supuesto, hay escenarios donde la posibilidad de trabajar directamente con la base de datos es extremadamente útil y en realidad es más simple que el trabajo con los modelos de Magento. Por ejemplo, al actualizar de forma global un atributo de un producto o al cambiar el estado de colección del producto, podríamos cargar una colección del producto y por medio de un bucle pasar a través de cada uno de los productos de forma individual e ir actualizando y guardando cada uno de ellos. Mientras que esto funcionaría bien en una colección más pequeña, tan pronto empezamos a crecer y trabajar con un conjunto de datos más grande, nuestro desempeño comenzaría a caer y el script tomaría varios segundos para ejecutarse.

Por otro lado, una consulta directa de SQL se ejecutará mucho más rápido, por lo general en menos de 1 segundo, dependiendo del tamaño del conjunto de datos y la consulta que se está ejecutando.

Fuera del contexto, Magento se hará cargo de todo el trabajo pesado de tener que establecer una conexión con la base de datos utilizando el modelo Mage_Core_Model_Resource; Magento hace dos tipos de conexiones disponibles para nosotros, core_read y core_write.

Comenzaremos por crear las instancias de un modelo de recursos y dos conexiones, una para la lectura y el otro para la escritura:

$recurso = Mage::getModel('core/resource');
$leer = $recurso->getConnection('core_read');
$escribir = $recurso->getConnection('core_write');

Incluso si estamos trabajando con consultas directas de SQL, gracias a Magento, nosotros no tenemos que preocuparnos por la configuración de la conexión a la base de datos más allá de crear instancias de un modelo de recurso y el tipo adecuado de conexión.

 

Añadir nuevo comentario

CAPTCHA
Esta pregunta es para comprobar si usted es un visitante humano y prevenir envíos de spam automatizado.
1 + 6 =
Resuelva este simple problema matemático y escriba la solución; por ejemplo: Para 1+3, escriba 4.