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,

Rajkumar .E
la source

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.

Codrain Technolabs Pvt Ltd
la source
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();

}
Rakesh Jesadiya
la source
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