Как получить данные из этой таблицы "курс валюты справочника"


Таблица содержит эти столбцы.

enter image description here

Мне нужно получить данные из этой таблицы 'directory_currency_rate'

Который находится в этом каталоге

/vendor/magento/module-directory/Model/Currency.php
/vendor/magento/module-directory/Model//ResourceModel/Currency.php

В этом файле модели нет файла collection.php, поэтому невозможно получить данные из этой таблицы.

Кто-нибудь знает, как получить данные из этой таблицы?

Заранее благодарю

Author: MGento, 2018-02-12

2 answers

Если вы не можете получить, используя какой-либо класс или методы, то вы можете использовать инструкцию SQL select, как показано ниже.

$objectManager = \Magento\Framework\App\ObjectManager::getInstance();
$resource = $objectManager->get('Magento\Framework\App\ResourceConnection');
$connection = $resource->getConnection();
$tableName = $resource->getTableName('directory_currency_rate');

// SELECT DATA 
$fields = array('rate');
$sql = $connection->select()                      
                  ->from($tableName, $fields) // to select some particular fields                  
                  ->where('currency_from = ?', 'USD')
                  ->where('currency_to = ?', 'EUR'); // adding WHERE condition with AND
$result = $connection->fetchAll($sql); 
echo '<pre>'; print_r($result); echo '</pre>'; 
 2
Author: Kishan Patadia, 2018-02-12 09:08:29

Вы можете использовать Magento\Directory\Api\CurrencyInformationAcquirerInterface и его метод getCurrencyInfo, которые возвращают все доступные валюты и их курсы конвертации.

На моем тестовом хосте он возвращает следующий результат:

result

Если вы хотите получить простой ответ из базы данных, я рекомендую вам написать собственный запрос.

Вот пример кода, который можно запустить из внешнего скрипта (вне Magento):

<?php
use Magento\Framework\App\Bootstrap;

require __DIR__ . '/app/bootstrap.php';
$params = $_SERVER;

$bootstrap = Bootstrap::create(BP, $params);

$obj = $bootstrap->getObjectManager();

$state = $obj->get('Magento\Framework\App\State');
$state->setAreaCode('frontend');

$currencyInformation = $obj->get('Magento\Directory\Api\CurrencyInformationAcquirerInterface');
$currenciesAndRates = $currencyInformation->getCurrencyInfo();

В своем классе вы должны использовать di: добавьте Magento\Directory\Api\CurrencyInformationAcquirerInterface в его метод построения и используйте это.

 0
Author: Sergey Uchuhlebov, 2018-02-12 08:46:21