Php 如何在magento 2中使用mysql查询获取db表值。Magento 2是否使用sql查询?
我是新来的 CustomModule\Database\Controller\Page\Index.phpPhp 如何在magento 2中使用mysql查询获取db表值。Magento 2是否使用sql查询?,php,mysql,magento,magento2,Php,Mysql,Magento,Magento2,我是新来的 CustomModule\Database\Controller\Page\Index.php <?php namespace CustomModule\Database\Controller\Page; class Index extends \Magento\Framework\App\Action\Action { protected $_pageFactory; public function __construct( \Magento
<?php
namespace CustomModule\Database\Controller\Page;
class Index extends \Magento\Framework\App\Action\Action
{
protected $_pageFactory;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\View\Result\PageFactory $pageFactory)
{
$this->_pageFactory = $pageFactory;
return parent::__construct($context);
}
public function execute()
{
return $this->_pageFactory->create();
}
}
<?php
namespace CustomModule\Database\Block;
use Magento\Framework\View\Element\Template;
class Index extends Template
{
/**
* @var \Magento\Framework\App\ResourceConnection
*/
public $resourceConnection;
public function __construct(
\Magento\Framework\App\Action\Context $context,
\Magento\Framework\App\ResourceConnection $resourceConnection
) {
$this->resourceConnection = $resourceConnection;
parent::__construct($context);
}
/**
* Get Table name using direct query
*/
public function getTablename($tableName)
{
/* Create Connection */
$connection = $this->resourceConnection->getConnection();
$tableName = $connection->getTableName($tableName);
return $tableName;
}
}
显示错误
protected $_resource;
public function __construct(
\Magento\Framework\App\ResourceConnection $resource
) {
$this->_resource = $resource;
}
public function execute()
{
// get connection
$connection = $this->_resource->getConnection();
// table name
$tableName = $this->_resource->getTableName('your table name');
// Query
$select_sql = "Select * FROM " . $tableName;
// fetch result
$results = $connection->fetchAll($select_sql);
// print result
print_r($results);
}
1个例外情况:
异常#0(Magento\Framework\Exception\RuntimeException):创建对象时发生类型错误:CustomModule\Database\Block\Index
/** @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */
private $productCollectionFactory;
public function __construct(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory) {
$this->productCollectionFactory = $productCollectionFactory;
}
异常#0(Magento\Framework\Exception\RuntimeException):创建对象时发生类型错误:CustomModule\Database\Block\Index
/** @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */
private $productCollectionFactory;
public function __construct(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory) {
$this->productCollectionFactory = $productCollectionFactory;
}
#1在[vendor\Magento\Framework\ObjectManager\Factory\Dynamic\Developer->create('CustomModule\Dat…',array('data'=>array())调用[vendor\Magento\Framework\ObjectManager\ObjectManager.php:56]
#2在[vendor\Magento\Framework\View\Element\BlockFactory.php:46]调用Magento\Framework\ObjectManager\ObjectManager->create('CustomModule\Dat…',array('data'=>array()))
#3在[vendor\Magento\Framework\View\Element\BlockFactory->createBlock('CustomModule\Dat…',array('data'=>array())调用[vendor\Magento\Framework\View\Layout\Generator\Block.php:272]
#4在[vendor\Magento\Framework\View\Layout\Generator\Block.php:252]调用的Magento\Framework\View\Layout\Generator\Block->getBlockInstance('CustomModule\Dat…',array('data'=>array()
#5在[vendor\Magento\Framework\View\Layout\Generator\Block->createBlock('CustomModule\Dat…','index',array('data'=>array())调用的Magento\Framework\View\Layout\Generator\Block.php:229]
#在[vendor\Magento\Framework\View\Layout\Generator\Block]调用6 Magento\Framework\View\Layout\ScheduledStructure(&Magento\Framework\View\Layout\Block->generateBlock(&Magento\Framework\View\Layout\ScheduledStructure\000000000 6B3BC800000037A2237A2235D#,'index'),&Magento\Framework\Framework\View\Layout\Layout\dataer\Block.php:134]
#7在[vendor\Magento\Framework\View\Layout\Generator\Context]调用的Magento\Framework\View\Layout\Generator\Block->process(&Magento\Framework\View\View\Layout\Reader\Context\0000000006B33B33B0000000037A2235D;&Magento\Framework\View\Layout\GeneratorPool.php:81]
#在[vendor\Magento\Framework\View\Layout\GeneratorPool->process(&Magento\Framework\View\Layout\Reader\Context#000000000 6B33B33B0000000037A2235D#,&Magento\Framework\View\Layout\Generator\Context#000000000 6B38D0000000037A2235D#)处调用
#9在[vendor\Magento\Framework\intercept\Interceptor.php:58]处调用Magento\Framework\View\Layout->generateElements()
#10在[vendor\Magento\Framework\View\Layout\Interceptor->\uuuuuuuuu callParent('generateeelements',array())调用[vendor\Magento\Framework\intercepton\Interceptor.php:138]
#11在[vendor\Magento\Framework\View\Layout\Interceptor->Magento\Framework\intercepton\{closure}调用Magento\Framework\intercepton\Interceptor.php:153]
#12在[generated\code\Magento\Framework\View\Layout\Interceptor.]调用的Magento\Framework\View\Interceptor->\uuuuuu调用插件('generateElements',array(),array(array('Layout-model-cac…','core-session-dep…,'customer session…','catalog session-…','persistent session…','checkout session…','tax session depe…)))
#13在[vendor\Magento\Framework\View\Layout\Interceptor->generateElements()调用[vendor\Magento\Framework\View\Layout\Builder.php:129]
#14在[vendor\Magento\Framework\View\Layout\Builder.php:55]处调用Magento\Framework\View\Page\Builder->generateLayoutBlocks()
#15 Magento\Framework\View\Page\Builder->generateLayoutBlocks()在[vendor\Magento\Framework\View\Layout\Builder.php:65]处调用
#16在[vendor\Magento\Framework\View\Layout\Builder->build]调用Magento\Framework\View\Page\Config.php:224]
#17在[vendor\Magento\Framework\View\Page\Config->build()处调用Magento\Framework\View\Page\Config.php:237]
#18在[generated\code\Magento\Framework\View\Page\Config->publicBuild]调用Magento\Framework\View\Page\Config\Interceptor.php:37]
#19在[vendor\Magento\Framework\View\Page\Config\Interceptor->publicBuild]调用Magento\Framework\View\Result\Page.php:242]
#20在[vendor\Magento\Framework\View\Result\Page->render(&Magento\Framework\App\Response\Http\Interceptor\000000000 6B3BBDE0000000037A2235D)调用[vendor\Magento\Framework\View\Result\Layout.php:171]
#21在[vendor\Magento\Framework\Result\Layout->renderResult(&Magento\Framework\App\Response\Http\Interceptor#000000000 6B3BBDE0000000037A2235D#)调用[vendor\Magento\Framework\intercepton\Interceptor.php:58]
#22在[vendor\Magento\Framework\View\Result\Page\Interceptor->\uuuuuuuu callParent('renderResult',array(&Magento\Framework\App\Response\Http\Interceptor#000000000 6B3BBDE0000000037A2235D#))调用的Magento\Framework\intercepton\Interceptor.php:138]
#23在[vendor\Magento\Framework\View\Result\Page\Interceptor->Magento\Framework\intercepton\{closure}(&Magento\Framework\App\Response\Http\Interceptor#000000000 6B3BBDE0000000037A2235D#)调用[vendor\Magento\Framework\intercepton\Interceptor.php:153]
#24 Magento\Framework\View\Result\Page\Interceptor->\uuuuu调用插件('renderResult',数组(&Magento\Framework\App\Response\Http\Interceptor#000000000 6B3BBDE0000000037A2235D#),数组(数组('Result-messages','Result-builtin-c..,'Result-varnish-c..))调用于[generated\code\Magento\Framework\View\Result\Page\Interceptor.php:130]
#25在[vendor\Magento\Framework\View\Result\Page\Interceptor->renderResult(&Magento\Framework\App\Response\Http\Interceptor\000000000 6B3BBDE0000000037A2235D)调用[vendor\Magento\Framework\App\Http.php:120]
#26在[generated\code\Magento\Framework\App\Http->launch]调用Magento\Framework\App\Http\Interceptor.php:24]
#27在[vendor\Magento\Framework\App\Http\Interceptor->launch]调用Magento\Framework\App\Bootstrap.php:261]
#28在[index.php:39]调用Magento\Framework\App\Bootstrap->run(&Magento\Framework\App\Http\Interceptor#000000000 6B3BBD7000000037A2235D)
您可以使用以下代码通过MySQL查询从数据库表中获取数据:
简单的回答是:你没有。
Magento 2为您提供了访问数据库资源的集合和工厂,而不需要您进行写操作
/** @var \Magento\Catalog\Model\ResourceModel\Product\CollectionFactory */
private $productCollectionFactory;
public function __construct(\Magento\Catalog\Model\ResourceModel\Product\CollectionFactory $productCollectionFactory) {
$this->productCollectionFactory = $productCollectionFactory;
}