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.