Apa perbedaan antara `joinField` dan` joinTable` dalam koleksi?

8

Dalam file tersebut app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php, ada fungsi bernama joinFielddan ada yang lain joinTable.

Jika bidang sebenarnya adalah kolom dalam tabel datar, apa artinya bergabung dengan mereka? Dan dalam situasi apa saya harus menggunakannya joinTable? Bisakah keduanya digunakan secara bergantian?

sampo
sumber

Jawaban:

5

Kedua metode hampir identik, perbedaannya adalah bahwa joinField()hanya memilih satu kolom dari tabel yang digabungkan, sementara Anda dapat menentukan array kolom di joinTable`.

Jadi Anda dapat selalu menggunakan joinTablebukan joinField. Contoh

 joinField('country_name', 'directory/country_name', 'name', 'country_id=shipping_country', "{{table}}.language_code='en'", 'left')

sama dengan

 joinTable('directory/country_name', 'country_id=shipping_country', ['country_name' => 'name'], "{{table}}.language_code='en'", 'left')

Tetapi joinField()sebaiknya tidak digunakan jika Anda membutuhkan lebih dari satu kolom dari tabel gabungan.

Fabian Schmengler
sumber