Абстрактные классы моделей ресурсов


Взглянув на некоторые модели ресурсов в Magento 2, вы найдете следующие определения классов

namespace Magento\Catalog\Model\ResourceModel;

abstract class AbstractResource extends \Magento\Eav\Model\Entity\AbstractEntity
{
   ...
}

namespace Magento\Customer\Model\ResourceModel;

class Customer extends \Magento\Eav\Model\Entity\VersionControl\AbstractEntity
{
    ...
}

class Group extends \Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb
{
    ...
}

class Visitor extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
    ...
}

Как вы можете видеть, существуют VersionControl абстрактные классы и обычные.

\Magento\Eav\Model\Entity\AbstractEntity
\Magento\Eav\Model\Entity\VersionControl\AbstractEntity
\Magento\Framework\Model\ResourceModel\Db\AbstractDb
\Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb

В чем разница между этими двумя? Когда вы создаете свои собственные сущности, должны ли ваши модели ресурсов распространяться на класс VersionControl или на обычный?

 3
Author: Vicky, 2016-04-01

1 answers

Итак, просто чтобы уточнить, в Magento 2:

  • \Magento\Eav\Model\Entity\VersionControl\AbstractEntity расширяет \Magento\Eav\Model\Entity\AbstractEntity
  • \Magento\Framework\Model\ResourceModel\Db\VersionControl\AbstractDb расширяет \Magento\Framework\Model\ResourceModel\Db\AbstractDb

Классы VersionControl обладают следующими дополнительными функциями:

  • После загрузки и сохранения сущности они регистрируют снимок данных сущности \Magento\Framework\Model\ResourceModel\Db\VersionControl\Snapshot для отслеживания изменений. Этот снимок используется с дополнительной функцией isModified, чтобы проверить, была ли сущность изменена в методе save.
  • При сохранении сущности \Magento\Framework\Model\ResourceModel\Db\VersionControl\RelationComposite используется для отношения модели процесса сохраняются до и после сохранения объекта.

Согласно фундаментальному курсу Magento U, при создании собственных сущностей вы должны использовать \Magento\Eav\Model\Entity\AbstractEntity и \Magento\Framework\Model\ResourceModel\Db\AbstractDb. Классы VersionControl никогда не упоминаются в течение курса.

 4
Author: Raphael at Digital Pianism, 2016-04-11 13:58:39