Cara mendapatkan data tabel khusus saya dari magento 2


8

Saya telah membuat tabel baru menggunakan modul khusus dan menyimpan nilai ke tabel ini, sekarang, saya perlu mendapatkan data tabel dalam file php blok dari database di magento 2, Bagaimana cara mencapai ini?

TableName="email_format" columns="customerid"dan "format"sekarang, saya perlu mengambil id pelanggan dan nilai format dari tabel.

Terima kasih,

Jawaban:


15

1) Saya Asumsikan Anda telah membuat file Model dan Koleksi yang terkait dengan tabel itu.

2) Dalam pembangun file PHP Blok, tambahkan satu argumen (Ketergantungan Injeksi) seperti di bawah ini dan simpan dalam variabel anggota kelas.

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

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

3) Siapkan metode publik di blok Anda untuk mengakses koleksi seperti di bawah ini.

public function getCollection(){

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

}

4) Loop melalui masing-masing hasil koleksi.

Semoga ini bisa membantu Anda.


Bisakah kita menyuntikkan \ Namespace \ Modulename \ Model \ ResourceModel \ ModelName \ Collection langsung ke konstruktor?
Mehdi

10

Anda bisa langsung mendapatkan tabel kustom menggunakan konsep 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);

Atau

Ini cara yang tepat menggunakan blok:

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

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

Anda bisa mendapatkan koleksi dengan metode pabrik:

public function getCollection(){

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

}

6
Ini bukan cara yang benar
Codrain Technolabs Pvt Ltd

11
Menggunakan object manager secara langsung jelas bukan cara yang paling elegan untuk melakukannya. Cobalah untuk tetap menggunakan injeksi ketergantungan
Raphael di Digital Pianism
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.