phpmysqlphalconphalcon-orm

How to implement multiple conditions for single table column in PhalconPHP


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]
]);

Solution

  • 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.