Bạn đã đề cập đến một hướng dẫn giải thích hoạt động CRUD mà không có mô hình, nhưng nó không phải là cách thực hành tốt khi sử dụng trình quản lý đối tượng.
Hãy để tôi giải thích hoạt động crud với mô hình, nó rất đơn giản. Đây là khái niệm rất quan trọng trong Magento.
Ví dụ: Hãy xem xét cấu trúc bảng dưới đây
Đối với hoạt động CRUD, bạn cần tạo ba thứ
1. Mô hình
Trong Mô hình, bạn cần khởi tạo mô hình tài nguyên
app/code/<vendor>/<module>/Model/Example.php
<?php
namespace <vendor>\<module>\Model;
use Magento\Framework\Model\AbstractModel;
class Example extends AbstractModel
{
/**
* Define resource model
*/
protected function _construct()
{
$this->_init('<vendor>\<module>\Model\ResourceModel\Example');
}
}
2. Mô hình tài nguyên
Trong mô hình tài nguyên, bạn cần khởi tạo tên bảng và khóa chính.
app/code/<vendor>/<module>/Model/ResourceModel/Example.php
<?php
namespace <vendor>\<module>\Model\Resource;
class Example extends \Magento\Framework\Model\ResourceModel\Db\AbstractDb
{
/**
* Define main table
*/
protected function _construct()
{
$this->_init('custom_table_name', 'id'); //here id is the primary key of custom table
}
}
3. Bộ sưu tập
Trong bộ sưu tập, bạn cần xác định Mô hình và Mô hình tài nguyên.
app/code/<vendor>/<module>/Model/ResourceModel/Example/Collection.php
<?php
namespace <vendor>\<module>\Model\ResourceModel\Example;
class Collection extends \Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection
{
/**
* Define model & resource model
*/
protected function _construct()
{
$this->_init(
'<vendor>\<module>\Model\Example',
'<vendor>\<module>\Model\ResourceModel\Example'
);
}
}
Đó là nó, bây giờ bạn có thể tìm nạp giá trị bảng trong bất kỳ khối nào bằng cách sử dụng phép nội xạ phụ thuộc.
Ví dụ:
Nhận và Đặt Dữ liệu trong Khối
Vui lòng lưu ý, chúng tôi chuyển <module>\<vendor>\Model\ExampleFactory
vào hàm tạo, nhưng không có tệp nào được tìm thấy ở vị trí đó
Trong Magento 2, mỗi mô hình CRUD có một lớp nhà máy tương ứng. Tất cả các tên lớp của nhà máy là tên của lớp mô hình được gắn với từ Nhà máy Chế biến. Vì vậy, lớp mô hình của chúng tôi được đặt tên
<module>/<vendor>/Model/Example
này có nghĩa là lớp nhà máy của chúng tôi được đặt tên<module>/<vendor>/Model/ExampleFactory
………………….
………………….
protected $_exampleFactory;
public function __construct( <vendor>\<module>\Model\ExampleFactory $db)
{
$this->_exampleFactory = $db;
}
public function anyMethodYouWant()
{
//set value
$this->_exampleFactory->create()->setData(array('event_name' => 'xyz', 'event_imgurl' => 'xyz',...............))->save();
//get value
$data=$this->_exampleFactory->create()->getCollection();
foreach ($data as $d )
{
echo $d->getEventImgurl(); //table field event_imgurl
echo $d->getEventName(); //table field event_name
}
}
sau đó bạn có thể gọi phương thức khối này trong tệp mẫu của bạn
<?php $block->anyMethodYouWant(); ?>