Was ist der Unterschied zwischen "joinField" und "joinTable" in Sammlungen?

8

In der Datei app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.phpgibt es eine Funktion mit dem Namen joinFieldund eine andere joinTable.

Wenn Felder tatsächlich Spalten in den flachen Tabellen sind, was bedeutet es, sie zu verbinden? Und unter welchen Umständen sollte ich joinTablestattdessen verwenden? Können beide austauschbar verwendet werden?

Shampoo
quelle

Antworten:

5

Beide Methoden sind nahezu identisch. Der Unterschied besteht darin, dass joinField()nur eine einzelne Spalte aus der verknüpften Tabelle ausgewählt wird, während Sie in joinTable` ein Array von Spalten angeben können.

Sie können also immer joinTableanstelle von verwenden joinField. Das Beispiel

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

ist das gleiche wie

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

Aber joinField()sollte nicht verwendet werden , wenn Sie mehr als eine Spalte der verknüpften Tabelle benötigen.

Fabian Schmengler
quelle