Абстрактные классы моделей ресурсов
Взглянув на некоторые модели ресурсов в 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
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