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,

Rajkumar .E
sumber

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.

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

}
Rakesh Jesadiya
sumber
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