如何从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.