如何从magento 2获取我的自定义表格数据


8

我使用自定义模块创建了一个新表,并将值存储到该表中,现在,我需要从magento 2的数据库中的php文件块中获取表数据,如何实现呢?

TableName="email_format" columns="customerid"而"format"现在,我需要从表中检索客户ID和格式值。

谢谢,

Answers:


15

1)我假设您已经创建了与该表关联的模型和集合文件。

2)在如下所示的Block PHP文件构造函数中,添加一个参数(依赖注入),并将其存储在类成员变量中。

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

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

3)在您的代码块中准备一个公共方法,以访问如下所示的集合。

public function getCollection(){

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

}

4)循环浏览每个收集结果。

希望这能够帮到你。


我们可以直接将\ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection注入到构造函数中吗?
— Mehdi

10

您可以使用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);

要么

这是使用block的正确方法:

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

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

您可以通过工厂方法获取集合:

public function getCollection(){

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

}

6
这是不正确的方法
— Codrain Technolabs Pvt Ltd

11
直接使用对象管理器绝对不是最优雅的方法。尝试坚持依赖注入
— Raphael在Digital Pianism '16
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.