I have created a new table using custom module and stored value to this table, now, i need to get table data in block php file from database in magento 2, How to achieve this?
TableName="email_format" columns="customerid" and "format" now, i need to retrieve customer id and format value from table.
Thanks,
2 Answers 2
1) I Assume you have created Model and Collection file associated with that tables.
2) In a Block PHP file constructor add one argument (Dependency Injection) like below and store it in a class member variable.
public function __construct(
Context $context,
\Namespace\Modulename\Model\ModelNameFactory $modelNameFactory,
array $data = array()
) {
$this->_modelFactory = $modelFactory;
parent::__construct($context, $data);
}
3) Prepare a public method in your block to access collection like below.
public function getCollection(){
return $this->_modelFactory->create()->getCollection();
}
4) Loop through each of the collection result.
Hope, this will help you.
-
Can we inject \Namespace\Modulename\Model\ResourceModel\ModelName\Collection directly in to constructor?Mehdi– Mehdi2017年07月24日 20:22:22 +00:00Commented Jul 24, 2017 at 20:22
You can directly get custom table using objectmanager concept,
$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);
Or
This is proper way using block:
public function __construct(
Context $context,
\Namespace\Module\Model\ModuleFactory $modelFactory,
array $data = array()
) {
$this->_modelFactory = $modelFactory;
parent::__construct($context, $data);
}
You can get collection by factory methods:
public function getCollection(){
return $this->_modelFactory->create()->getCollection();
}
-
6This is not correct wayCodrain Technolabs Pvt Ltd– Codrain Technolabs Pvt Ltd2016年04月23日 10:52:39 +00:00Commented Apr 23, 2016 at 10:52
-
12Using the object manager directly is definitely not the most elegant way of doing it. Try to stick to dependency injectionRaphael at Digital Pianism– Raphael at Digital Pianism2016年04月23日 10:53:48 +00:00Commented Apr 23, 2016 at 10:53