5

我想知道是否有任何方法可以使用教义的魔法方法来查找空值。例如:

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

本质上,我想返回所有未删除的记录。我已经尝试了上述方法,但它似乎不起作用。

有任何想法吗?

4

4 回答 4

10

尝试这样做会给我错误:

可捕获的致命错误:传递给 Doctrine\ORM\EntityRepository::findBy() 的参数 1 必须是数组,给定字符串

所以这对我有用:

$repository->findBy(array('date_field' => null));
于 2013-01-31T09:30:53.913 回答
2

其实,我想我是想成为幻想。可以这样做:

Doctrine::getTable('myClass')->findBy('deleted_at',null);
于 2010-10-06T00:01:34.947 回答
1

我知道这是旧的,但提供的解决方案对于 Doctrine 1.2.x 不正确

当您使用以下功能时:

Doctrine::getTable('YourClass')->findByDeleted_at(null); //he want to get NOT DELETED rows!

Doctrine 抛出一个错误:"You must specify the value to 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。

希望这会帮助某人...

于 2013-02-01T14:15:40.530 回答
0

我知道这很旧,但您的第一次尝试不正确。对于字段“deleted_at”,您应该这样做:

Doctrine::getTable('YourClass')->findByDeleted_at($val);

请注意,我仅将“deleted_at”字段的第一个字母大写。

于 2011-02-03T15:04:28.220 回答