使用Propel addCond检查条目是否为NULL

时间:2016-05-02 14:22:37

标签: postgresql propel

我有以下Propel条件:

->addCond('cond3', 're.max_person_count', Criteria::ISNULL)

会产生以下错误:Invalid text representation: 7 ERROR: invalid input syntax for integer: „NULL“

仔细观察后,似乎生成的SQL如下:

... (re.max_person_count=:p3 OR ...

取代期望的:

... (re.max_person_count IS NULL OR ...

为什么当我选择的CriteriaISNULL时,Propel会尝试插入值?我做错了什么?

1 个答案:

答案 0 :(得分:0)

似乎使用Criteria::ISNULL会产生一些我无法解释的不可预测的行为(尝试的相应生成的SQL没有映射到IS NULL)。

这是最终结果,按照我的意愿行事(如果有人需要回答的话):

   $resQuery = ResQuery::create()
        ->leftJoinTable('tbl')
        ->addCond('cond1', 'tbl_id', $tableId, Criteria::EQUAL)
        ->addCond('cond2', 'canceled', 'FALSE', Criteria::EQUAL)
        ->combine(array('cond1','cond2'), 'AND', 'cond1and2')
        ->addCond('cond3', 'tbl.max_count', null)
        ->addCond('cond4', 'tbl.max_count', '0', Criteria::GREATER_THAN)
        ->addCond('cond5', 'confirmed', 'TRUE', Criteria::EQUAL)
        ->combine(array('cond4', 'cond5'), 'AND', 'cond4and5')
        ->combine(array('cond3', 'cond4and5'), 'OR', 'cond3or4and5')
        ->where(array('cond1and2', 'cond3or4and5'), 'AND')
        ->find();