Конвертировать getSingleton ("ядро/ресурс")->getConnection ($тип) из Magento 1 в Magento 2
Мне нужно преобразовать некоторые вызовы одноэлементных методов из Magento 1 в Magento 2. В частности Mage::getSingleton('core/resource')->getConnection($type);
Как я могу сделать это в M2? Я знаю, что сначала я должен создать экземпляр диспетчера объектов, но все, что будет после этого, мне неизвестно. Какой-нибудь совет?
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)...
}
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);
Я решил эту проблему с помощью:
$om = \Magento\Framework\App\Bootstrap::create(BP, $_SERVER) -> getObjectManager();
$rc = $om->get("\Magento\Framework\App\ResourceConnection");