Qual é a utilidade de addExpressionFieldToSelect sobre addFieldToSelect?

9

Estou estudando Magento e realmente não entendo o que é o uso de addExpressionFieldToSelectmais addFieldToSelect? Não encontrei a resposta em nenhum lugar da minha leitura. Tanto quanto posso dizer, parece estar reescrevendo nomes de campos - mas somente se você passar em uma matriz com a reescrita. Por que você não conseguiu fazer isso com addFieldToSelect em primeiro lugar, se você sabe como o campo deve ser reescrito?

sadq3377
fonte

Respostas:

11

Em addExpressionFieldToSelect(), você pode passar uma Zend_Db_Exprinstância com uma expressão SQL arbitrária.

Por exemplo, isso é possível com addExpressionFieldToSelect(), mas não com addFieldToSelect():

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

e resulta em uma consulta SQL com

SELECT UPPER(name) as name_in_upper_case FROM ...

Os espaços reservados para os nomes de campo são apenas açúcar sintático no topo.

Fabian Schmengler
fonte