¿Cuál es la diferencia entre `joinField` y` joinTable` en colecciones?

8

En el archivo app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php, hay una función llamada joinFieldy hay otra joinTable.

Si los campos son en realidad columnas en las tablas planas, ¿qué significa unirlos? ¿Y en qué circunstancias debería usar joinTableen su lugar? ¿Se pueden usar ambos indistintamente?

champú
fuente

Respuestas:

5

Ambos métodos son casi idénticos, la diferencia es que joinField()solo selecciona una sola columna de la tabla unida, mientras que puede especificar una matriz de columnas en joinTable`.

Por lo tanto, siempre puede usar en joinTablelugar de joinField. El ejemplo

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

es lo mismo que

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

Pero joinField()no debe usarse si necesita más de una columna de la tabla unida.

Fabian Schmengler
fuente