Конвертировать getSingleton ("ядро/ресурс")->getConnection ($тип) из Magento 1 в Magento 2


Мне нужно преобразовать некоторые вызовы одноэлементных методов из Magento 1 в Magento 2. В частности Mage::getSingleton('core/resource')->getConnection($type); Как я могу сделать это в M2? Я знаю, что сначала я должен создать экземпляр диспетчера объектов, но все, что будет после этого, мне неизвестно. Какой-нибудь совет?

Author: 7ochem, 2017-03-16

3 answers

Не рекомендуется, но короткая альтернатива Magento 2:

\Magento\Framework\App\ObjectManager::getInstance(\Magento\Framework\App\ResourceConnection::class)->getConnection($resource);

Рекомендуемый и общий подход:

Добавьте Magento\Framework\App\ResourceConnection в качестве зависимости в конструктор класса, где вам нужно его использовать, назначьте его свойству, а затем используйте свойство для получения соединения.

public function __construct(\Magento\Framework\App\ResourceConnection $resourceConnection)
{
    $this->resourceConnection = $resourceConnection;
}

public function doSmth()
{
    ...$this->resourceConnection->getConnection($resource)...
}
 3
Author: Sergii Ivashchenko, 2017-03-16 16:22:37

Magento\Framework\Приложение\Подключение к ресурсам подключение к ресурсам для M2 как для чтения, так и для записи.

public function __construct(
    \Magento\Framework\App\ResourceConnection $resourceConnection
) {
   $this->resourceConnection = $resourceConnection;
}

Используйте следующий способ:

$connection = $this->resourceConnection->getConnection();
$sql = "SELECT increment_id FROM sales_shipment WHERE order_id = '$orderId'";
$result = $connection->fetchAll($sql);
 3
Author: Sohel Rana, 2017-03-16 16:25:20

Я решил эту проблему с помощью:

$om = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER) -> getObjectManager();
$rc = $om->get("\Magento\Framework\App\ResourceConnection");
 0
Author: Vladimir Despotovic, 2017-03-17 09:48:29