在Magento 2中创建模型是MVC架构的一条巨大路径。在 Magento 2 CRUD中,模型具有许多不同的功能,例如管理数据,安装或升级模块。在本教程中,我只讨论数据管理CRUD。我们必须创建Model,Resource Model,Resource Model Conllection来管理表中的数据:mageplaza_topic
如上所述。
在创建模型之前,我们需要为它创建接口。让我们创建TopicInterface
:
app/code/Mageplaza/HelloWorld/Model/Api/Data/TopicInterface.php
并把这个内容:
<?php
namespace Mageplaza\HelloWorld\Model\Api\Data;
interface TopicInterface
{
public function getId();
public function setId();
public function getTitle();
public function setTitle();
public function getContent();
public function setContent();
public function getCreationTime();
public function setCreationTime();
}
该接口已经定义了表格数据的set和get方法,我们将在与模型交互时使用它们。在将CRUD模型导出到基于Magento服务合同的API时,此界面起着重要作用。
现在我们将创建模型文件:
app/code/Mageplaza/HelloWorld/Model/Topic.php
这是该文件的内容:
<?php
namespace Mageplaza\HelloWorld\Model;
class Topic extends \Magento\Framework\Model\AbstractModel implements \Magento\Framework\DataObject\IdentityInterface,
\Mageplaza\HelloWorld\Model\Api\Data\TopicInterface
{
const CACHE_TAG = 'mageplaza_topic';
protected function _construct()
{
$this->_init('Mageplaza\HelloWorld\Model\ResourceModel\Topic');
}
public function getIdentities()
{
return [self::CACHE_TAG . '_' . $this->getId()];
}
}
这个模型类将扩展AbstractModel类Magento\Framework\Model\AbstractModel
并实现TopicInterface
和IdentityInterface\Magento\Framework\DataObject\IdentityInterface
。IdentityInterface将强制Model类定义getIdentities()
将返回模型的唯一ID 的方法。如果模型在数据库操作后需要缓存刷新并将信息呈现到前端页面,则必须仅使用此接口。
_construct()
只要模型被实例化,就会调用该方法。每个CRUD模型都必须使用_construct()方法来调用_init()方法。这个_init()方法将定义实际从数据库中获取信息的资源模型。如上所述,我们定义资源模型Mageplaza \ Topic \ Model \ ResourceModel \ Topic关于模型的最后一件事是你应该在模型中使用的一些变量:
$_eventPrefix
- 要触发的事件的前缀$_eventObject
- 事件访问时的对象名称$_cacheTag
- 在缓存中使用的唯一标识符