What would be the right syntax to find the sum of money saved in plans where the status
is either abanadoned
or 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]
]);
You could simply do and it's perfectly fine solution:
$total = self::sum([
'column' => 'amount_saved_so_far',
'conditions' => '(status = "completed" OR status = "abanadoned")
AND user_id = :user_id:',
'bind' => ['user_id' => $userId]
]);
Or another option would be to use array binding:
$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
]
]);
Second option is more elegant and more practical in case you have more values for the IN clause.