Какой будет правильный синтаксис, чтобы найти сумму денег, сэкономленную в планах, где status
либо abanadoned
или же completed
:
$total = self::sum([
'column' => 'amount_saved_so_far',
'conditions' => 'status = "completed" AND user_id = :user_id:',
//find plans with a status of abandoned as well
'bind' => ['user_id' => $userId]
]);
Вы могли бы просто сделать, и это совершенно прекрасное решение:
$total = self::sum([
'column' => 'amount_saved_so_far',
'conditions' => '(status = "completed" OR status = "abanadoned")
AND user_id = :user_id:',
'bind' => ['user_id' => $userId]
]);
Или другой вариант будет использовать привязку массива:
$total = self::sum([
'column' => 'amount_saved_so_far',
'conditions' => 'status IN ({vars:array}) AND user_id = :user_id:',
'bind' => [
'vars' => ['completed', 'abanadoned'],
'user_id' => $userId
]
]);
Второй вариант является более элегантным и более практичным, если у вас есть больше значений для предложения IN.
Других решений пока нет …