学说查找魔法空值

时间:2010-10-05 23:45:50

标签: php doctrine doctrine-1.2 findby

我想知道是否还有使用doctrine的魔术方法来寻找空值。例如:

Doctrine::getTable('myClass')->findByDeletedAt(null);

基本上,我想返回所有未删除的记录。我已经尝试了上述内容,但它似乎无法正常工作。

有什么想法吗?

4 个答案:

答案 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。

希望能帮到某人......

相关问题