Cách lấy dữ liệu bảng tùy chỉnh của tôi từ magento 2


8

Tôi đã tạo một bảng mới bằng cách sử dụng mô-đun tùy chỉnh và giá trị được lưu trữ cho bảng này, bây giờ, tôi cần lấy dữ liệu bảng trong tệp php khối từ cơ sở dữ liệu trong magento 2, Làm thế nào để đạt được điều này?

TableName="email_format" columns="customerid""format"bây giờ, tôi cần lấy id khách hàng và định dạng giá trị từ bảng.

Cảm ơn,

Câu trả lời:


15

1) Tôi giả sử bạn đã tạo tệp Mô hình và Bộ sưu tập được liên kết với các bảng đó.

2) Trong một Trình xây dựng tệp khối PHP, thêm một đối số (Dependency Injection) như bên dưới và lưu trữ nó trong một biến thành viên lớp.

 public function __construct(
    Context $context,
    \Namespace\Modulename\Model\ModelNameFactory $modelNameFactory,

    array $data = array()
) {
    $this->_modelFactory = $modelFactory;
    parent::__construct($context, $data);
}

3) Chuẩn bị một phương thức công khai trong khối của bạn để truy cập bộ sưu tập như dưới đây.

public function getCollection(){

    return $this->_modelFactory->create()->getCollection();

}

4) Lặp lại qua từng kết quả thu thập.

Hy vọng điều này sẽ giúp bạn.


Chúng ta có thể tiêm \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection trực tiếp vào hàm tạo không?
Mehdi

10

Bạn có thể trực tiếp nhận bảng tùy chỉnh bằng cách sử dụng khái niệm objectmanager,

    $objectManager =   \Magento\Framework\App\ObjectManager::getInstance();
    $connection = $objectManager->get('Magento\Framework\App\ResourceConnection')->getConnection('\Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION'); 
    $result1 = $connection->fetchAll("SELECT * FROM email_format");

echo "<pre>";print_r($result1);

Hoặc là

Đây là cách thích hợp để sử dụng khối:

public function __construct(
    Context $context,
    \Namespace\Module\Model\ModuleFactory $modelFactory,

    array $data = array()
) {
    $this->_modelFactory = $modelFactory;
    parent::__construct($context, $data);
}

Bạn có thể lấy bộ sưu tập theo phương pháp của nhà máy:

public function getCollection(){

    return $this->_modelFactory->create()->getCollection();

}

6
Đây không phải là cách chính xác
Codrain Technolabs Pvt Ltd

11
Sử dụng trình quản lý đối tượng trực tiếp chắc chắn không phải là cách làm thanh lịch nhất. Cố gắng bám vào tiêm phụ thuộc
Raphael tại Digital Pianism
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.