Comment obtenir mes données de table personnalisées depuis magento 2


8

J'ai créé une nouvelle table en utilisant un module personnalisé et une valeur stockée dans cette table, maintenant, j'ai besoin d'obtenir les données de la table dans le fichier php de bloc à partir de la base de données dans magento 2, comment y parvenir?

TableName="email_format" columns="customerid"et "format"maintenant, j'ai besoin de récupérer l'identifiant client et la valeur de formatage de la table.

Merci,

Réponses:


15

1) Je suppose que vous avez créé un fichier de modèle et de collection associé à ces tables.

2) Dans un constructeur de fichier PHP Block, ajoutez un argument (injection de dépendance) comme ci-dessous et stockez-le dans une variable de membre de classe.

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

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

3) Préparez une méthode publique dans votre bloc pour accéder à la collection comme ci-dessous.

public function getCollection(){

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

}

4) Parcourez chacun des résultats de la collecte.

J'espère que cela vous aidera.


Pouvons-nous injecter \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection directement dans le constructeur?
Mehdi

10

Vous pouvez directement obtenir un tableau personnalisé en utilisant le concept 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);

Ou

C'est la bonne façon d'utiliser le bloc:

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

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

Vous pouvez obtenir la collecte par des méthodes d'usine:

public function getCollection(){

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

}

6
Ce n'est pas la bonne façon
Codrain Technolabs Pvt Ltd

11
L'utilisation directe du gestionnaire d'objets n'est certainement pas la manière la plus élégante de le faire. Essayez de vous en tenir à l'injection de dépendance
Raphael au Digital Pianism
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.