Sự khác biệt giữa `joField` và` joTable` trong các bộ sưu tập là gì?


8

Trong tập tin app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php, có một chức năng được đặt tên joinFieldvà có một chức năng khác joinTable.

Nếu các trường thực sự là các cột trong các bảng phẳng, thì việc tham gia chúng có nghĩa là gì? An trong hoàn cảnh nào tôi nên sử dụng joinTablethay thế? Cả hai có thể được sử dụng thay thế cho nhau?

Câu trả lời:


5

Cả hai phương thức này gần như giống hệt nhau, sự khác biệt là joinField()chỉ chọn một cột duy nhất từ ​​bảng đã tham gia, trong khi bạn có thể chỉ định một mảng các cột trong joTable`.

Vì vậy, bạn luôn có thể sử dụng joinTablethay vì joinField. Ví dụ

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

giống như

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

Nhưng joinField()không nên được sử dụng nếu bạn cần nhiều hơn một cột của bảng đã tham gia.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.