Como obter meus dados de tabela personalizados do magento 2

8

Eu criei uma nova tabela usando o módulo personalizado e o valor armazenado nessa tabela. Agora, eu preciso obter dados da tabela no arquivo php do banco de dados no magento 2. Como conseguir isso?

TableName="email_format" columns="customerid"e "format"agora, preciso recuperar a identificação do cliente e o valor do formato da tabela.

Obrigado,

Rajkumar .E
fonte

Respostas:

15

1) Suponho que você criou o arquivo Model and Collection associado a essas tabelas.

2) Em um construtor de arquivos PHP em bloco, adicione um argumento (injeção de dependência) como abaixo e armazene-o em uma variável de membro da classe.

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

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

3) Prepare um método público no seu bloco para acessar a coleção como abaixo.

public function getCollection(){

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

}

4) Faça um loop em cada um dos resultados da coleção.

Espero que isso ajude você.

Codrain Technolabs Pvt Ltd
fonte
Podemos injetar \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection diretamente no construtor?
Mehdi
10

Você pode obter diretamente uma tabela personalizada usando o conceito de gerenciador de objetos,

    $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);

Ou

Esta é a maneira correta usando o bloco:

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

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

Você pode obter a coleção pelos métodos de fábrica:

public function getCollection(){

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

}
Rakesh Jesadiya
fonte
6
Isso não está correto
Codrain Technolabs Pvt Ltd
11
Usar o gerenciador de objetos diretamente definitivamente não é a maneira mais elegante de fazê-lo. Tente manter a injeção de dependência
Raphael em Digital pianismo