
前回のトピックでは、CRUDとモデルについて説明しました。ご存知のように、モデルファイルは全体的なデータベースロジックを含みますが、SQLクエリを実行することはありません。リソースモデルがそれを行います。それでは、このテーブルのリソースモデルを作成します。SmartOSC\HelloWorld\Model\ResourceModel\Topic

リソースモデル
このファイルの内容:
<?php
namespace SmartOSC\HelloWorld\Model\ResourceModel;
class Topic extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
protected function _construct()
{
$this->_init('SmartOSC_topic', 'topic_id');
}
}
Magento の CRUD リソースモデルは、データベースから情報を取得するための関数を含む抽象クラス\Magento\Framework\Model\ResourceModel\Db\AbstractDb) を継承する必要があります。
モデルクラスと同様に、リソースモデルクラスにも必須のメソッド_construct()があります。この方法は、_init()関数を呼び出して、テーブル名と主キーを定義します。この例では、テーブル’SmartOSC_topic’と主キー’topic_id’を定義します。
リソースモデルコレクション – モデルコレクションの取得
コレクションモデルは、コレクションテーブルのデータをフィルタリングして取得することができるリソースモデルと考えられます。コレクションモデルは以下の場所に置かれます。
SmartOSC\HelloWorld\Model\ResourceModel\Topic\Collection.php
このファイルの内容で:
<?php
namespace SmartOSC\HelloWorld\Model\ResourceModel\Topic;
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
protected function _construct()
{
$this->_init('SmartOSC\HelloWorld\Model\Topic', 'SmartOSC\HelloWorld\Model\ResourceModel\Topic');
}
}
CRUDコレクションクラスは、\Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollectionを継承し、_construct()関数内で_init()メソッドを呼び出してモデル、リソースモデルを初期化する必要があります。