Qual é a diferença entre `joinField` e` joinTable` nas coleções?

8

No arquivo app/code/core/Mage/Eav/Model/Entity/Collection/Abstract.php, há uma função nomeada joinFielde outra joinTable.

Se os campos são realmente colunas nas tabelas simples, o que significa unir-se a eles? E em que circunstância devo usar joinTable? Ambos podem ser usados ​​de forma intercambiável?

xampu
fonte

Respostas:

5

Ambos os métodos são quase idênticos, a diferença é que joinField()apenas uma coluna é selecionada da tabela unida, enquanto você pode especificar uma matriz de colunas em joinTable`.

Então você sempre pode usar em joinTablevez de joinField. O exemplo

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

é o mesmo que

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

Mas joinField()não deve ser usado se você precisar de mais de uma coluna da tabela unida.

Fabian Schmengler
fonte