Как получить данные моей пользовательской таблицы из magento 2

8

Я создал новую таблицу, используя пользовательский модуль и сохранил значение этой таблицы, теперь мне нужно получить данные таблицы в файле php блока из базы данных в magento 2, как этого добиться?

TableName="email_format" columns="customerid"и "format"теперь мне нужно получить идентификатор клиента и значение формата из таблицы.

Спасибо,

Раджкумар .Е
источник

Ответы:

15

1) Я предполагаю, что вы создали файл Model и Collection, связанный с этими таблицами.

2) В конструкторе файлов Block PHP добавьте один аргумент (Dependency Injection), как показано ниже, и сохраните его в переменной члена класса.

 public function __construct(
    Context $context,
    \Namespace\Modulename\Model\ModelNameFactory $modelNameFactory,

    array $data = array()
) {
    $this->_modelFactory = $modelFactory;
    parent::__construct($context, $data);
}

3) Подготовьте публичный метод в вашем блоке для доступа к коллекции, как показано ниже.

public function getCollection(){

    return $this->_modelFactory->create()->getCollection();

}

4) Перебрать каждый результат сбора.

Надеюсь, что это поможет вам.

Codrain Technolabs Pvt Ltd
источник
Можем ли мы вставить \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection непосредственно в конструктор?
Мехди
10

Вы можете напрямую получить пользовательскую таблицу, используя концепцию objectmanager,

    $objectManager =   \Magento\Framework\App\ObjectManager::getInstance();
    $connection = $objectManager->get('Magento\Framework\App\ResourceConnection')->getConnection('\Magento\Framework\App\ResourceConnection::DEFAULT_CONNECTION'); 
    $result1 = $connection->fetchAll("SELECT * FROM email_format");

echo "<pre>";print_r($result1);

Или

Это правильный способ использования блока:

public function __construct(
    Context $context,
    \Namespace\Module\Model\ModuleFactory $modelFactory,

    array $data = array()
) {
    $this->_modelFactory = $modelFactory;
    parent::__construct($context, $data);
}

Вы можете получить коллекцию фабричными методами:

public function getCollection(){

    return $this->_modelFactory->create()->getCollection();

}
Ракеш Джесадия
источник
6
Это не правильный путь
Codrain Technolabs Pvt Ltd
11
Использование менеджера объектов напрямую - определенно не самый элегантный способ сделать это. Попытайтесь придерживаться внедрения зависимости
Рафаэль в Цифровом Пианизме