Модели в Magento – краткий обзор

Работа с данными в Magento основана на трех принципах: Модели, Ресурсы модели и Коллекции. Модель – это буква «M» в аббревиатуре MVC (Model-View-Controller, Модель-Представление-Контроллер). Модели отвечают за бизнес-логику любого PHP приложения, и это не является исключением для Magento. Поскольку Magento использует архитектурный шаблон MVC, Модели в движке используются для инкапсуляции бизнес-логики (т.е., совокупности правил, принципов и зависимостей поведения объектов). Главной задачей для Модели в Мадженто является обработка данных из базы данных, поскольку она управляет всеми логическими операциями с базой данных.

Все Модели размещаются в папке «Model» модуля. Чтобы использовать модели в Magento, вам нужно указать их в конфигурационном файле вашего модуля (config.xml).

Все модели Magento наследуются от Mage_Core_Model_Abstract. Magento разделяет Модель на две части: непосредственно модели, которые обрабатывают бизнес-логику, и на Ресурсы модели, которые призваны общаться с базой данных. Ресурс модели также имеет два разных типа: Entity и Mysql4.

Модели работают с Ресурсами модели для получения своих данных. Ресурсы модели выполняют  операции с базой данных и потом передают данные самой Модели. Это делается на абстракциях более высокого уровня, поэтому нам не нужно делать это самим. Однако мы должны сообщать Magento, какой Ресурс модели работает с нашей Моделью.

Magento использует шаблон Singleton в форме хранения данных в глобальном реестре. Здесь возникает разница между методами Mage::getModel() и Mage::getSingleton(). Последний метод проверяет, был ли создан экземпляр запрошенного класса, и если это так – возвращает объект из реестра. В противном случае создается экземпляр класса и сохраняется в реестре.

 

 

Ресурс модели Magento

Ресурс модели соединяется с базой данных и выполняет операции CRUD. Он управляет различными соединениями для чтения/записи.

Все Ресурсы модели расширяют класс Mage_Core_Model_Resource_Db_Abstract.

В конфигурационном файле модуля в ноде <resourceModel> указывается информация о Ресурсе модели. Она говорит Magento, где найти префикс класса при использовании фабричного метода Mage::getResourceModel().

Для извлечения Ресурсов модели также можно использовать удобные методы, например, Mage::getResourceModel() и Mage::getResourceSingleton(). И если у вас есть объект модели, его сопутствующий Ресурс модели можно получить с помощью метода Mage::getModel()->getResource().

 

 

Коллекции Модели в Magento:

Когда нам нужны результаты, основанные на разных моделях, тогда нам нужно создать Коллекцию или же использовать существующую Коллекцию. Это дает нам массу удобных методов, упрощая манипулирование сущностями и уменьшая необходимость писать сложные sql запросы. Если модель соотносится со строкой таблицы в качестве объекта, то Коллекция соотносится с набором таких строк.

Если вы указали в файле конфигурации настройки для использования Ресурсов модели, у вас уже есть все необходимое для создания Коллекций. Коллекции следуют соглашению об именовании на основе Ресурсов модели. Конфиг берет название Ресурса модели и добавляет _collection в конец этого названия. Это означает, что имя класса и имя файла должны соответствовать этому соглашению.

Все Коллекции расширяют Mage_Core_Model_Resource_Db_Collection_Abstract.

Для получения коллекции используется метод Mage::getModel()->getCollection(). Однако можно использовать и другую похожую запись Mage::getResourceModel('module/model_collection'), которая позволяет опустить создание экземпляра класса модели.

 

Recent Posts

Брюс Ли

Не важно, как медленно ты продвигаешься, главное, что ты не останавливаешься - Брюс Ли   Read More

20/01/2021

Google Search Console – Проблема с LCP и как ее решить

Недавно мы писали о нововведении в инструменте для вебмастеров Google Search Console – Основных интернет-показателях. Поскольку… Read More

18/01/2021

Как изменить HTML код встроенных элементов WP oEmbed в WordPress?

Начиная с WordPress версии 2.9 в движок была добавлена поддержка oEmbed – формат простого API,… Read More

16/01/2021

Многофункциональное устройство коверлок: ключевые особенности

Существует много разновидностей швейного оборудования, которые открывают большие возможности для совершенствования навыков. Один из самых… Read More

15/01/2021

Как сделать отложенную загрузку для HTML, iframe и встроенного видео

Ленивая (или отложенная) загрузка (Lazy loading) – это популярный метод асинхронного обращения к адресу ресурса,… Read More

13/01/2021

Google Search Console – Проблема с CLS и как ее решить

Мы ранее писали о нововведении в инструменте для вебмастеров Google Search Console – Основных интернет-показателях.… Read More

11/01/2021