标签:value nbsp 如何使用 factor 数据库 执行sql 查询 href efault
app/code/Mageplaza/HelloWorld/Model/Post.php
<?php namespace Mageplaza\HelloWorld\Model; class Post extends \Magento\Framework\Model\AbstractModel implements \Magento\Framework\DataObject\IdentityInterface { const CACHE_TAG = ‘mageplaza_helloworld_post‘; protected $_cacheTag = ‘mageplaza_helloworld_post‘; protected $_eventPrefix = ‘mageplaza_helloworld_post‘; protected function _construct() { $this->_init(‘Mageplaza\HelloWorld\Model\ResourceModel\Post‘); } public function getIdentities() { return [self::CACHE_TAG . ‘_‘ . $this->getId()]; } public function getDefaultValues() { $values = []; return $values; } }
该模型类将扩展AbstractModel类Magento\Framework\Model\AbstractModel并实现\Magento\Framework\DataObject\IdentityInterface。IdentityInterface将强制Model类定义getIdentities()将返回模型的唯一ID 的方法。如果模型在数据库操作后需要缓存刷新并将信息呈现到前端页面,则必须仅使用此接口。
_construct()只要模型被实例化,就会调用该方法。每个CRUD模型都必须使用_construct()方法来调用_init()方法。这个_init()方法将定义实际从数据库中获取信息的资源模型。如上所述,我们定义了资源模型Mageplaza \ Post \ Model \ ResourceModel \ Post关于模型的最后一件事是你应该在模型中使用的一些变量:
1。$_eventPrefix - 要触发的事件的前缀
2。$_eventObject - 事件访问时的对象名称
3。$_cacheTag - 在缓存中使用的唯一标识符
app/code/Mageplaza/HelloWorld/Model/ResourceModel/Post.php
<?php namespace Mageplaza\HelloWorld\Model\ResourceModel; class Post extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb { public function __construct( \Magento\Framework\Model\ResourceModel\Db\Context $context ) { parent::__construct($context); } protected function _construct() { $this->_init(‘mageplaza_helloworld_post‘, ‘post_id‘); } }
Magento中的每个CRUD资源模型都必须扩展抽象类\Magento\Framework\Model\ResourceModel\Db\AbstractDb,其中包含从数据库中获取信息的函数。
与模型类一样,此资源模型类将具有必需的方法_construct()。此方法将调用_init()函数来定义该表的表名和主键。在这个例子中,我们有表mageplaza_helloworld_post和主键post_id。
app/code/Mageplaza/HelloWorld/Model/ResourceModel/Post/Collection.php
<?php namespace Mageplaza\HelloWorld\Model\ResourceModel\Post; class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection { protected $_idFieldName = ‘post_id‘; protected $_eventPrefix = ‘mageplaza_helloworld_post_collection‘; protected $_eventObject = ‘post_collection‘; /** * Define resource model * * @return void */ protected function _construct() { $this->_init(‘Mageplaza\HelloWorld\Model\Post‘, ‘Mageplaza\HelloWorld\Model\ResourceModel\Post‘); } }
CRUD集合类必须从函数中扩展\Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection并调用_init()方法来初始化模型,资源模型_construct()。
var/generation/<vendor_name>/<module_name>/Model/ClassFactory.php
在这种情况下,它将是:
var/generation/Mageplaza/HelloWorld/Model/PostFactory.php
要实例化模型对象,我们将使用自动构造函数依赖项注入来注入工厂对象,然后使用工厂对象来实例化模型对象。
例如,我们将调用模型来获取控制器中的数据。
app/code/Mageplaza/HelloWorld/Controller/Index/Index.php
<?php namespace Mageplaza\HelloWorld\Controller\Index; class Index extends \Magento\Framework\App\Action\Action { protected $_pageFactory; protected $_postFactory; public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Framework\View\Result\PageFactory $pageFactory, \Mageplaza\HelloWorld\Model\PostFactory $postFactory ) { $this->_pageFactory = $pageFactory; $this->_postFactory = $postFactory; return parent::__construct($context); } public function execute() { $post = $this->_postFactory->create(); $collection = $post->getCollection(); foreach($collection as $item){ echo "<pre>"; print_r($item->getData()); echo "</pre>"; } exit(); return $this->_pageFactory->create(); } }
正如您在此控制器中看到的,将在_construct()函数中创建PostFactory对象。
在execute()函数中,我们$post = $this->_postFactory->create();用来创建模型对象。
标签:value nbsp 如何使用 factor 数据库 执行sql 查询 href efault
原文地址:https://www.cnblogs.com/q1104460935/p/9471902.html