magento 2からカスタムテーブルデータを取得する方法


8

カスタムモジュールを使用して新しいテーブルを作成し、このテーブルに値を保存しました。今、magento 2のデータベースからブロックphpファイルのテーブルデータを取得する必要があります。これを行う方法は?

TableName="email_format" columns="customerid"そして"format"今、私はテーブルから顧客IDとフォーマット値を取得する必要があります。

おかげで、

回答:


15

1)そのテーブルに関連付けられたモデルとコレクションファイルを作成したと仮定します。

2)ブロックPHPファイルコンストラクターで、以下のように1つの引数(依存性注入)を追加し、クラスメンバー変数に格納します。

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

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

3)ブロックにパブリックメソッドを準備して、以下のようにコレクションにアクセスします。

public function getCollection(){

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

}

4)各収集結果をループします。

これがあなたを助けることを願っています。


\ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collectionをコンストラクタに直接注入できますか?
Mehdi 2017

10

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

または

これはブロックを使用する適切な方法です:

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

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

ファクトリメソッドでコレクションを取得できます。

public function getCollection(){

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

}

6
これは正しい方法ではありません
Codrain Technolabs Pvt Ltd

11
オブジェクトマネージャーを直接使用することは、間違いなく最もエレガントな方法ではありません。依存性注入にこだわる
デジタルピアニズムのラファエル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.