我想知道是否还有使用doctrine的魔术方法来寻找空值。例如:
Doctrine::getTable('myClass')->findByDeletedAt(null);
基本上,我想返回所有未删除的记录。我已经尝试了上述内容,但它似乎无法正常工作。
有什么想法吗?
答案 0 :(得分:7)
尝试这个给我错误:
捕获致命错误:传递给Doctrine \ ORM \ EntityRepository :: findBy()的参数1必须是一个数组,给定字符串
所以这对我有用:
$repository->findBy(array('date_field' => null));
答案 1 :(得分:2)
实际上,我认为我是想要想要的。可以这样做:
Doctrine::getTable('myClass')->findBy('deleted_at',null);
答案 2 :(得分:0)
我知道这已经过时但你的第一次尝试是不正确的。对于字段'deleted_at',您应该这样做:
Doctrine::getTable('YourClass')->findByDeleted_at($val);
注意我只将字段'deleted_at'的第一个字母大写。
答案 3 :(得分:0)
我知道这是旧的,但是如果Doctrine 1.2.x的解决方案不正确
使用以下功能时:
Doctrine::getTable('YourClass')->findByDeleted_at(null); //he want to get NOT DELETED rows!
Doctrine会抛出一个错误:“你必须指定findBy的值”,因为 null会因为没有传递值而受到威胁;
->findBy('deleted_at', null)
也会抛出异常。
->findBy('deleted_at','NULL')
或者不正确,因为它被翻译为SQL:... WHERE deleted_at = 'NULL'
;
此类查询的SQL语法应如下所示:
... WHERE deleted_at IS NULL;
所以解决方案是使用->findBySql()
方法:
Doctrine::getTable('YourClass')->findBySql('deleted_at IS NULL', array());
*第三个参数可能是Hydration_Mode。
希望能帮到某人......