Подтвердить что ты не робот

Magento: Опишите основные понятия моделей, моделей ресурсов и коллекций, а также отношения, которые они имеют друг к другу

Я пытаюсь понять Magento, и мне было интересно, может ли кто-нибудь дать мне понять эту тему

Опишите основные понятия моделей, моделей ресурсов и коллекций, а также отношения, которые они имеют друг к другу

4b9b3361

Ответ 1

Модели ресурсов - это объекты, содержащие код, который извлекает данные из хранилища данных. На практике это означает, что модель ресурсов - это объект, который содержит код построения SQL и выборку, а также ссылки на объекты, которые соединяются с основной базой данных Magento.

Модели - это объекты, которые содержат агностический код базы данных для взаимодействия с "типом" данных. В традиционных моделях моделирования данных ваши объекты модели содержат бизнес-логику для определенного типа объекта (вид объекта, означающий Product, Customer и т.д.).

Важно. В дополнение к указанному выше определению части кода Magento используют "Модели" как общий объект, который содержит бизнес-логику, не связанную с данными. Эти "модели" следует рассматривать как простые старые объекты, просто созданные через шаблон Magento factory. Моделями, которые наследуются от Mage_Core_Model_Abstract, являются прежние - модели, которые не являются более поздними. Этот пост предполагает, что "модель" относится к первой. Я также начал ссылаться на них как на Magento модели CRUD.

A Collection - это объект, который содержит код, который извлекает группу (коллекция, массив, список и т.д.) объектов модели. Поскольку он генерирует SQL для этого, он также рассматривается как модель ресурса и создается с помощью метода Mage::getResourceModel (хотя объекты коллекции наследуются от другой цепочки классов, чем обычные модели ресурсов. Это не шаблоны проектирования, которые вы ищете для). Объекты коллекции также реализуют определенные стандартные PHP-интерфейсы и могут использоваться в циклах foreach для повторения их результатов.

Объект модели Magento содержит ссылку на модель ресурсов, которая использует для загрузки своих данных. Для каждого объекта модели существует отдельный объект модели ресурса. то есть модель продукта имеет модель ресурсов продукта.

Объект модели Magento также может использоваться для создания экземпляра объекта коллекции. Объекты коллекции также печатаются в соответствии с их объектами модели. Модель продукта может использоваться для создания экземпляра объекта коллекции продуктов.

Объект коллекции создает SQL для извлечения объектов (коллекции, массива, списка и т.д.) объектов, а также содержит код для назначения данных основному объекту модели. Поскольку этот код немного отличается от кода в объекте модели модели модели, часто возникают небольшие расхождения между моделями, загружаемыми напрямую или через коллекцию. Например, коллекция не вызывает метод каждой модели _afterLoad, или коллекция EAV не будет загружать все данные атрибутов по умолчанию (если не используется addAttributeToCollection('*')). Многие разработки Magento отслеживают и учитывают эти несоответствия.

Наконец, в исходном коде Magento есть места, которые отличаются от приведенных выше. Например: объект коллекции отчетов свободен - они не связаны с определенным классом модели. Помните об этом, но будьте готовы к конкретным модулям Magento, чтобы удивить вас.

Ответ 2

Слишком много, чтобы напечатать:) Алан Шторм написал замечательную статью о Основы модели magento