Quelle est la différence entre `joinField` et` joinTable` dans les collections?


8

Dans le fichier app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php, il y a une fonction nommée joinFieldet il y en a une autre joinTable.

Si les champs sont en fait des colonnes dans les tables plates, qu'est-ce que cela signifie de les joindre? Et dans quelles circonstances devrais-je utiliser à la joinTableplace? Peuvent-ils tous les deux être utilisés de manière interchangeable?

Réponses:


5

Les deux méthodes sont presque identiques, la différence est que joinField()ne sélectionne qu'une seule colonne dans la table jointe, tandis que vous pouvez spécifier un tableau de colonnes dans joinTable`.

Vous pouvez donc toujours utiliser joinTableau lieu de joinField. L'exemple

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

est le même que

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

Mais joinField()ne doit pas être utilisé si vous avez besoin de plusieurs colonnes de la table jointe.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.