Jakie jest zastosowanie addExpressionFieldToSelect w porównaniu z addFieldToSelect?

9

Uczę Magento i naprawdę nie rozumiem, co jest stosowanie addExpressionFieldToSelectover addFieldToSelect? Nigdzie nie znalazłem odpowiedzi w swoim czytaniu. O ile mi wiadomo, wydaje się, że przepisuje nazwy pól - ale tylko jeśli przekażesz tablicę z przepisaniem. Dlaczego po prostu nie możesz tego zrobić za pomocą addFieldToSelect, jeśli wiesz, jak pole powinno zostać przepisane?

sadq3377
źródło

Odpowiedzi:

11

W addExpressionFieldToSelect()można przekazać Zend_Db_Exprinstancję z dowolnym wyrażeniem SQL.

Na przykład jest to możliwe addExpressionFieldToSelect(), ale nie z addFieldToSelect():

$collection->addExpressionFieldToSelect(
    'name_in_upper_case',
    new Zend_Db_Expr('UPPER(name)'),
    []
);

i powoduje zapytanie SQL z

SELECT UPPER(name) as name_in_upper_case FROM ...

Symbolami zastępczymi dla nazw pól są po prostu cukier syntaktyczny na górze.

Fabian Schmengler
źródło