Magento2 直接写 sql 语句(direct query)
有时候一些复杂或者特殊的数据库操作,我们需要直接写sql来操作。
有2种方式
一,依赖注入的方式
protected $_resource; public function __construct( \Magento\Framework\App\ResourceConnection $resource ) { $this->_resource = $resource; } $write = $this->_resource->getConnection('core_write'); $write->query("XXXXXX"); $read = $this->_resource->getConnection('core_read'); $read->fetchOne("XXXXX");
二,直接使用objectManager
$objectManager = \Magento\Framework\App\ObjectManager::getInstance(); $resource = $objectManager->get("\Magento\Framework\App\ResourceConnection"); $write = $resource->getConnection('core_write'); $write->query("XXXXXX"); $read = $resource->getConnection('core_read'); $records = $read->fetchAll("xxxxxx");
简单来说,就是调用\Magento\Framework\App\ResourceConnection这个类,利用里面的core_write和core_read来进行写和读。
- fetchOne 查询一个字段
- fetchAll 查询多条数据
- fetchRow 查询一条数据
具体的代码见
vendor/magento/zendframework1/library/Zend/Db/Adapter/Abstract.php
学习了