Modelos y Colecciones en Magento 2
Modelos y Colecciones en Magento 2
Gratis
Modelos y Colecciones
Como la mayoría de los CMS y plataformas modernas, hoy en día Magento adopta un enfoque de mapeo relacional de objetos (ORM) sobre consultas SQL sin formato.
En este artículo vamos a trabajar directamente con objetos, esto hace que el código del componente sea más legible, manejable y aislado de las diferencias SQL específicas. Modelo, Recurso y Colección son tres tipos de clases que trabajan juntas para permitir una gestión completa de los datos de la entidad, desde cargar, guardar, eliminar y enumerar entidades.
Si por ahora no entiendes mucho de lo que comento en este artículo, no te preocupes, lo vas a aprender poco a poco, a mi ritmo y con mi forma particular de mostrarte lo fácil que es aprender.
Cuando hablo de componente me refiero a un desarrollo realizado en Magento, conjunto de archivos y carpetas que agregadas dentro de un proyecto representarían un componente o mejor conocido como un Módulo o Extensión de Magento, si requieres conocer como desarrollar un Módulo básico en Magento 2 te invito a que visites este artículo en donde aprenderás al respecto.
Los Modelos en Magento 2 para entenderlos de forma muy fácil vamos a pensar en una clase PHP, a través de esta clase nos comunicaremos con una tabla en nuestro motor de Datos en MySql, mediante estas clases realizaríamos la gestión de los datos así es como podríamos comunicarnos a través de clases en PHP llamadas modelos de Magento. Algo importante es que estas clases o modelos en sí no contienen ningún código de lenguaje SQL para comunicarse con la base de datos.
Las clases que representan un modelo de comunicación con las tablas de la Base de datos están desacopladas en una estructura propia llamada clase de recurso. Luego, a cada modelo se le asigna una clase de recurso. Las llamadas a métodos load, save o delete en modelos se delegan a clases de recursos, ya que son ellas las que realmente leen, escriben y eliminan datos de la base de datos.
En teoría, con suficiente conocimiento, es posible escribir nuevas clases de recursos para varios Componentes o Módulos de nuevas tablas en la base de datos.
(SPL) o bien Biblioteca PHP estándar, por ahora no nos suena a que se refiere, pero cuando hablamos de Colecciones, podemos pensar en una colección como una serie de instancias de modelos individuales. En un nivel básico, las colecciones se extienden desde la clase \Magento\Framework\Data\Collection, que implementa \IteratorAggregate y \Countable y que es todo esto de clases e implementaciones, la verdad que por ahora no hay problema solo piensa en una librería de PHP que ya existe, una librería genial que nos ayudara a realizar las consultas necesarias cuando implementemos nuestra clase de colección en modelos básicos solo confirmar que efectivamente heredan de la clase Collection ya mencionada.
Vamos a iniciar con la creación de un Módulo en el que tendremos un Modelo de Datos muy simple, iniciaremos con la creación de un módulo el cual le llamaremos Marcgento_Office, este tendrá una primera tabla personalizada que se llamara Departamento y solo tendrá dos entidades o bien a lo que conocemos como columnas de una tabla de la base de datos.
Entidades de la tabla Departamentos:
- entity_id: representará la clave principal, un valor numérico y auto incremental.
- name: representará el nombre del departamento, un valor de cadena de caracteres.
Vamos a iniciar la creación de un Módulo, cada módulo comienza con la creación de los archivos registration.php y module.xml. Para el propósito de este ejercicio, creemos el archivo app/code/Marcgento/Office/registration.php con el siguiente contenido:
registration.php
<?php
\Magento\Framework\Component\ComponentRegistrar::register(
\Magento\Framework\Component\ComponentRegistrar::MODULE,
'Foggyline_Office',
__DIR__
);
El archivo registration.php es una especie de punto de entrada a nuestro módulo.
Ahora creemos el archivo app/code/Marcgento/Office/etc/module.xml con el siguiente contenido:
module.xml
<?xml version="1.0"?>
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Marcgento_Office" setup_version="1.0.0">
<sequence>
<module name="Magento_Eav"/>
</sequence>
</module>
</config>
Department.php
app/code/Marcgento/Office/Model/Department.php
<?php
namespace Marcgento\Office\Model;
class Department extends \Magento\Framework\Model\AbstractModel
{
protected function _construct()
{
$this->_init('Marcgento\Office\Model\ResourceModel\Department');
}
}
Voy a mostrar un ejemplo básico para entender la funcionalidad. Imaginé que nuestra entidad tiene una propiedad llamada empleado_average_salary como lo podemos ver en el siguiente código:
<?php
/* Obtener datos a través del atributo "employee_average_salary" mediante el método getData() */
$department->getData('employee_average_salary');
/* Obtener el dato del atributo "employee_average_salary" mediante el método mágico armado por get y el nombre del atributo "employee_average_salary" de la siguiente forma. */
$department->getEmployeeAverageSalary();
/* Asignar valor al atributo medinate setData() */
$department->setData('employee_average_salary', 'theValue');
/* Asignar valor al atributo mediante el método mágico, set y nombre del atributo. */
$department->setEmployeeAverageSalary('theValue');
$department->unsetData('employee_average_salary');
$department->unsEmployeeAverageSalary();
$department->hasData('employee_average_salary');
$department->hasEmployeeAverageSalary();
<?php
namespace Marcgento\Office\Model\ResourceModel;
class Department extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
protected function _construct()
{
$this->_init('marcgento_office_department', 'entity_id');
}
}
Reseñas
Calificación Media
Calificación Detallada
Estrellas 5 |
|
0 |
Estrellas 4 |
|
0 |
Estrellas 3 |
|
0 |
Estrellas 2 |
|
0 |
Estrellas 1 |
|
0 |
Sé el primero en reseñar “Modelos y Colecciones en Magento 2” Cancelar la respuesta
Gratis
Aún no hay reseñas.