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,

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.


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

}

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.