So erhalten Sie meine benutzerdefinierten Tabellendaten aus Magento 2

8

Ich habe eine neue Tabelle mit einem benutzerdefinierten Modul erstellt und einen Wert für diese Tabelle gespeichert. Jetzt muss ich Tabellendaten in einer Block-PHP-Datei aus der Datenbank in Magento 2 abrufen. Wie wird dies erreicht?

TableName="email_format" columns="customerid"und "format"jetzt muss ich Kunden-ID und Formatwert aus Tabelle abrufen.

Vielen Dank,

Rajkumar .E
quelle

Antworten:

15

1) Ich nehme an, Sie haben eine Modell- und Sammlungsdatei erstellt, die diesen Tabellen zugeordnet ist.

2) Fügen Sie in einem Block-PHP-Dateikonstruktor ein Argument (Dependency Injection) wie unten hinzu und speichern Sie es in einer Klassenmitgliedsvariablen.

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

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

3) Bereiten Sie eine öffentliche Methode in Ihrem Block vor, um wie unten beschrieben auf die Sammlung zuzugreifen.

public function getCollection(){

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

}

4) Durchlaufen Sie jedes Sammlungsergebnis.

Hoffe, das wird dir helfen.

Codrain Technolabs Pvt Ltd.
quelle
Können wir \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection direkt in den Konstruktor einfügen?
Mehdi
10

Sie können eine benutzerdefinierte Tabelle direkt mit dem Objektmanager-Konzept abrufen.

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

Oder

Dies ist der richtige Weg mit Block:

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

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

Sie können die Sammlung nach Fabrikmethoden erhalten:

public function getCollection(){

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

}
Rakesh Jesadiya
quelle
6
Dies ist nicht der richtige Weg
Codrain Technolabs Pvt Ltd
11
Die direkte Verwendung des Objektmanagers ist definitiv nicht die eleganteste Methode. Versuchen Sie, sich an die Abhängigkeitsinjektion zu halten
Raphael bei Digital Pianism