Ví dụ đơn giản về Magento2 của việc truy xuất và hiển thị trường bảng tùy chỉnh?


7

Tôi có một bảng tùy chỉnh trong cơ sở dữ liệu Magento2 của mình và không thể tìm thấy một ví dụ hoạt động đơn giản về cách kết nối, truy xuất và hiển thị dữ liệu trường trong trang Magento2.

Cái này hầu hết hoạt động nhưng không đầy đủ vì nó dừng tìm nạp trường nhưng không hiển thị cách thực sự hiển thị trường trên trang web: http://webkul.com/blog/magento2-write-custom-mysql-query-without mô hình -sử dụng /

Ai đó có thể xin vui lòng cung cấp một ví dụ đầy đủ?


1
Dành cho Magento 2. Tôi đang sử dụng bên dưới trình tạo CRUD mage2gen.com
Ankit Shah

Câu trả lời:


23

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

nhập mô tả hình ảnh ở đâ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\ExampleFactoryvà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/Examplenà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(); ?>

@Bilal - (nơi tôi phải viết mã này, ý tôi là xin cho đường dẫn) được bảo vệ $ _exampleFactory; hàm công khai __construct (<nhà cung cấp> / <mô đun> / Model / exampleFactory $ db) {$ this -> _ exampleFactory = $ db; } hàm công khai anyMethodYouWant () {$ this -> _ exampleFactory-> create () -> setData (mảng ('event_name' => 'xyz', 'event_imgurl' => 'xyz', ......... ......)) -> lưu (); $ data = $ this -> _ exampleFactory-> create () -> getCollection (); foreach ($ data dưới dạng $ d) {echo $ d-> getEventImgurl (); tiếng vang $ d-> getEventName (); }}
Khushbu_sipl

Giải thích rõ về @BilalUsean. :)
Sanchit Gupta

Cuối cùng tôi đã tìm thấy một lời giải thích đơn giản và dễ dàng để thực hiện các mô hình trên Magento2
slayerbleast
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.