我想过滤我的数据库中的Null,0或''的某些字段.不幸的是,在IN条件下使用NULL无法返回任何内容......我相信这是由于SQL中的NULL比较评估为UNKNOWN.例如:
$filterField = $this->Model->find('list', array(
'fields' => array('id','name'),
'recursive' => 0,
'conditions' => array('Model.related_string' => array(Null, 0, '')),
'order' => array('Model.name ASC')
)
);
Run Code Online (Sandbox Code Playgroud)
这始终不返回任何错误和零行,因为生成的查询具有SELECT ... WHERE 'Model'.'related_string' IN (NULL, 0, '').但是,如果我想单独OR OR条件,我似乎无法使用PHP的数组语法.我会覆盖这些值.例如:
$conditions['OR'] = array(
'Model.related_string' => array('', 0),
'Model.related_string' => NULL);
Run Code Online (Sandbox Code Playgroud)
失败.这将仅在覆盖"Model.related_string"键的值时搜索NULL条目.我是不是写了两个发现?
只需将其包装在另一个数组中:
$conditions['OR'] = array(
array('Model.related_string' => array('', 0)),
array('Model.related_string' => NULL)
);
Run Code Online (Sandbox Code Playgroud)
我建议如果你有许多不同的值来测试,你首先要考虑的是将它们标准化为一个可能的值.
| 归档时间: |
|
| 查看次数: |
3402 次 |
| 最近记录: |