W przypadku blokowania lub modelowania plików należy zainicjować zasób, a następnie wywołać połączenie
to jest
protected $_resource;
i
public function __construct(
\Magento\Backend\Block\Template\Context $context,
\Magento\Framework\App\Resource $resource,
array $data = []
) {
$this->_resource = $resource;
parent::__construct($context, $data);
}
do połączenia
protected function getConnection()
{
if (!$this->connection) {
$this->connection = $this->_resource->getConnection('core_write');
}
return $this->connection;
}
poniżej znajduje się przykład w pliku bloku
<?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
nie istnieje (przynajmniej nie w 2.1.3). Nie masz na myśliResourceConnection
?używasz starego wywołania dla wersji beta core_write i core_read w rc wygląda następująco:
zdobądź adapter:
weź stolik i wybierz:
pełny kurs stąd
źródło
Osiągnąłem to w następujący sposób. Mam niestandardowy plik, w którym tworzę obiekt i działał. Sprawdź to raz.
Daj mi znać, jeśli to działa.
źródło
Nie działa dla mnie :(
Oto mój plik bloku:
Pojawia się ten błąd: należy utworzyć obiekt DOMDocument.
czego mi brakuje?
źródło
źródło
Test\Vendor\Model\VendorFactory
alboTest\Vendor\Model\Vendor\Collection
.Spróbuj tego :
źródło
źródło