Php 如何在magento 2中使用mysql查询获取db表值。Magento 2是否使用sql查询?

Php 如何在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

我是新来的

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\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;
   }