magento2創(chuàng)建一個模型-model

與EAV模型不同,創(chuàng)建簡單的模型非常簡單。讓我們繼續(xù)為Log實體創(chuàng)建一個模型、資源模型和集合。

我們將首先創(chuàng)建<MAGELICIOUS_DIR>/Core/model/Log.php文件,其中包含以下內容:

class Log extends\ Magento\ Framework\ Model\ AbstractModel {
    protected $_eventPrefix = 'magelicious_core_log';
    protected $_eventObject = 'log';
    protected function _construct() {
        $this - > _init(\Magelicious\ Core\ Model\ ResourceModel\ Log::class);
    }
}

_eventPrefix和_eventObject的使用不是強制性的,但強烈建議使用。

這些值由Magento\Framework\Model\AbstractModel事件調度器使用,并增加了我們模塊未來的可擴展性。

雖然Magento使用<ModuleName><ModelName>約定進行$eventPrefix命名,但使用<VendorName><ModuleName><ModelName>可能更安全。

按照約定,$_eventObject通常帶有模型本身的名稱。然后,我們創(chuàng)建<MAGELICIOUS_DIR>/Core/Model/ResourceModel/Log.php文件,其中包含以下內容:

這里的_init方法采用兩個參數(shù):mainTable參數(shù)的magelicious_core_log值和idFieldName參數(shù)的entity_id值。

$idFieldName是指定數(shù)據(jù)庫中主列的名稱。值得注意的是,magelicious_core_log表仍然不存在,但我們稍后將對此進行說明。然后,我們將創(chuàng)建<MAGELICIOUS_DIR>/Core/Model/ResourceModel/Log/Collection.php文件,其中包含以下內容:

class Collection extends\ Magento\ Framework\ Model\ ResourceModel\ Db\ Collection\ AbstractCollection {
    protected function _construct() {
        $this - > _init(\Magelicious\ Core\ Model\ Log::class, \Magelicious\ Core\ Model\ ResourceModel\ Log::class);
    }
}

這里的_init方法接受兩個參數(shù):model和resourceModel的字符串名稱。Magento為此使用了<FULLY_QUALIFIED_CLASS_NAME>::CLASS語法,

因為它使用了一個漂亮的解決方案,而不是四處傳遞類字符串。

碼小課magento專區(qū):


magento-dn.png
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容