Bagaimana cara Muat data Model bergabung dengan 2 tabel?


9

Misalkan saya memiliki Model A sederhana yang menargetkan tabel A sekarang saya harus menambahkan beberapa info tambahan jadi saya memutuskan untuk membuat Model B dan menyimpan info tambahan itu dalam Tabel B dengan kunci asing yang menunjuk ke Tabel A kunci indeks.

Biasanya Bergabung dilakukan dalam koleksi tetapi jika saya memuat model koleksi tidak dipanggil, melainkan hanya resource modeldigunakan.

Bagaimana cara merubah Model A untuk memuat juga data dari Tabel B di load()?


Pertanyaan Bagus ... Saya menyukainya
Amit Bera

Ini adalah semacam implementasi sederhana EAV ... Saya menemukan semacam solusi tapi saya menunggu pendekatan lain dan mengujinya, sebelum mempostingnya
Fra

Jawaban:


11

Kelas model sumber daya dalam menambahkan fungsi berikut

protected function _getLoadSelect($field, $value, $object)
{
    $select = parent::_getLoadSelect($field, $value, $object);

    $select->joinLeft(
        array('t_b' => 'table_b'),
        $this->getMainTable() . '.id = t_b.id',
        array('columnA'));
    return $select;
}

Ketika Anda menelepon Mage::getModel('modulename/TableA')->load(1), metode ini akan bergabung dengan table_b.


Saya pikir limit(1)tidak diperlukan: joinLeft()akan cukup ...
Fra

Saya baru saja memberi contoh untuk itu. Anda dapat mengubah ini sesuai dengan kebutuhan Anda.
Sohel Rana

6

Saya dapat mengusulkan Anda pendekatan yang saya gunakan, dan itu cukup mudah.

Langkah:

  1. Tulis ulang model sumber daya Model A (Jika Model A adalah model Anda dan bukan Magento maka Anda dapat melewati langkah ini)

  2. Metode penulisan ulang _getLoadSelect () model sumber daya Model A. Kueri pemilihan dihasilkan dalam metode ini dan di sini Anda dapat bergabung dengan tabel lainnya.


Anda mengalahkan saya untuk itu. +1
Marius
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.