Come ottenere i dati della mia tabella personalizzata da Magento 2


8

Ho creato una nuova tabella utilizzando il modulo personalizzato e il valore memorizzato in questa tabella, ora, ho bisogno di ottenere i dati della tabella nel file php di blocco dal database in Magento 2, come ottenere questo?

TableName="email_format" columns="customerid"e "format"ora devo recuperare l'ID cliente e formattare il valore dalla tabella.

Grazie,

Risposte:


15

1) Suppongo che tu abbia creato il file Model e Collection associato a quelle tabelle.

2) In un costruttore di file PHP a blocchi aggiungere un argomento (Iniezione delle dipendenze) come di seguito e memorizzarlo in una variabile membro della classe.

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

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

3) Prepara un metodo pubblico nel tuo blocco per accedere alla raccolta come di seguito.

public function getCollection(){

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

}

4) Passa attraverso ciascuno dei risultati della raccolta.

Spero che questo ti possa aiutare.


Possiamo iniettare \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection direttamente nel costruttore?
Mehdi,

10

Puoi ottenere direttamente una tabella personalizzata usando il concetto di 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);

O

Questo è il modo corretto usando il blocco:

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

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

Puoi ottenere la raccolta con i metodi di fabbrica:

public function getCollection(){

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

}

6
Questo non è il modo corretto
Codrain Technolabs Pvt Ltd,

11
L'uso diretto del gestore oggetti non è sicuramente il modo più elegante per farlo. Cerca di restare fedele all'iniezione di dipendenza
Raffaello al Pianismo digitale il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.