Anatomía de un Modelo en Magento


Los modelos de datos de Magento son utilizados para manipular y acceder a los datos. La capa del modelo se divide en dos tipos fundamentales, modelos simples y modelos EAV, donde:

  • Los Modelos simples son mapeos simples de un objeto a una tabla, lo que significa que nuestros atributos de objetos coinciden con cada campo y con nuestra estructura de tablas.
  • Los Modelos EAV (Valor de Atributos de Entidad) se utilizan para describir las entidades con un número dinámico de atributos.

Es importante aclarar que no todos los Modelos que extienden de Magento utilizan el ORM. Los observers son un claro ejemplo del tipo de modelo más simple que no mapea una determinada tabla de la base de datos o de una entidad.

Además de esto, cada tipo de modelo está formado por las siguientes capas:

  • Model class: Aquí es donde la mayor parte de nuestra lógica de negocio reside. Los modelos se utilizan para manipular datos, pero no tienen acceso directo a ellos.
  • Resource Model class: Los modelos de recursos se utilizan para interactuar con la base de datos a favor de nuestros modelos. Ellos son los encargados de las operaciones CRUD reales.
  • Model Collection class: Cada modelo de datos tiene una clase collection; las colecciones son objetos que sostienen un número de instancias individuales al modelo de Magento.

Las siglas CRUD se refiere a los cuatro tipos básicos de operaciones en una base de datos: crear, leer, actualizar y eliminar.

Los modelos de Magento no contienen ninguna lógica para comunicarse con la base de datos; son base de datos agnósticas. En su lugar, el código reside en la capa del modelo del recurso.

Esto le da a de Magento la capacidad de soportar diferentes tipos de bases de datos y plataformas. Aunque en la actualidad sólo MySQL está soportado oficialmente, es completamente posible escribir una nueva clase de recursos para una nueva base de datos sin tocar nada de la lógica del Modelo.


Ahora vamos a experimentar instanciando el objeto de un producto y estableciendo algunas de sus propiedades, siguiendo estos pasos:

  • Desde el terminal ejecutamos la consola interactiva de Magento con el siguiente comando: php shell / imc.php
  • El primer paso es crear una nueva instancia del objeto de un producto escribiendo: magento> $product = Mage::getModel('catalog/product');
  • Podemos confirmar si se trata de una instancia en blanco de la clase de producto ejecutando: magento> echo get_class($product);
  • Debemos poder ver lo siguiente como una salida exitosa: magento> Magento_Catalog_Model_Product
  • Si queremos saber más acerca de los métodos de la clase, podemos ejecutar la siguiente línea de comandos: magento> print_r(get_class_methods($product));

Esto devolverá una matriz con todos los métodos disponibles dentro de la clase. Vamos a tratar de ejecutar el siguiente fragmento de código y modificar el precio del producto y su nombre:

$producto = Mage::getModel('catalog/product')->load(2);
$nombre = $producto->getName() . '-TEST';
$precio = $producto->getPrice();
$producto->setPrice($precio + 15);
$producto->setName($nombre);
$producto->save();

En la primera línea de código, estamos instanciando un objeto específico, entonces se está procediendo a recuperar el atributo de nombre del objeto. A continuación, estamos estableciendo el precio y el nombre, y finalmente guardamos el objeto.

Añadir nuevo comentario

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