我有以下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 ...
为什么当我选择的Criteria
为ISNULL
时,Propel会尝试插入值?我做错了什么?
答案 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();