Ao bloquear ou modelar arquivos, é necessário inicializar o recurso e chamar a conexão
isso é
protected $_resource;
e
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\App\Resource $resource,
array $data = []
) {
$this->_resource = $resource;
parent::__construct($context, $data);
}
para conexão
protected function getConnection()
{
if (!$this->connection) {
$this->connection = $this->_resource->getConnection('core_write');
}
return $this->connection;
}
abaixo está um exemplo no arquivo de bloco
<?php
/**[email protected]*/
namespace Sugarcode\Test\Block;
class Joinex extends \Magento\Framework\View\Element\Template
{
protected $_coreRegistry = null;
protected $_orderCollectionFactory = null;
protected $connection;
protected $_resource;
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\Registry $registry,
\Magento\Framework\App\Resource $resource,
\Magento\Sales\Model\Resource\Order\CollectionFactory $orderCollectionFactory,
array $data = []
) {
$this->_orderCollectionFactory = $orderCollectionFactory;
$this->_coreRegistry = $registry;
$this->_resource = $resource;
parent::__construct($context, $data);
}
public function _prepareLayout()
{
return parent::_prepareLayout();
}
protected function getConnection()
{
if (!$this->connection) {
$this->connection = $this->_resource->getConnection('core_write');
}
return $this->connection;
}
public function getDirectQuery()
{
$table=$this->_resource->getTableName('catalog_product_entity');
$sku = $this->getConnection()->fetchRow('SELECT sku,entity_id FROM ' . $table);
return $sku;
}
public function getJoinLeft()
{
$orders = $this->_orderCollectionFactory->create();
$orders->getSelect()->joinLeft(
['oce' => 'customer_entity'],
"main_table.customer_id = oce.entity_id",
[
'CONCAT(oce.firstname," ", oce.lastname) as customer_name',
'oce.firstname',
'oce.lastname',
'oce.email'
]
);
//$orders->getSelect()->__toString(); $orders->printlogquery(true); exit;
return $orders;
}
}
\Magento\Framework\App\Resource
não existe (pelo menos não no 2.1.3). Você não quer dizerResourceConnection
?você usou a chamada antiga para a versão beta core_write e core_read no rc é assim:
obter adaptador:
obter tabela e selecione:
curso completo a partir daqui
fonte
Eu consegui isso da seguinte maneira. Eu tenho um arquivo personalizado onde estou criando um objeto e funcionou. Verifique uma vez.
Tente e deixe-me saber se funciona para você.
fonte
Nao funciona para mim :(
Aqui está o meu arquivo de bloco:
Eu recebo este erro: O objeto DOMDocument deve ser criado.
o que estou perdendo?
fonte
fonte
Test\Vendor\Model\VendorFactory
ouTest\Vendor\Model\Vendor\Collection
.tente este :
fonte
fonte