我想知道是否有办法使用Doctrine的魔术方法查找空值。例如:
基本上,我想返回所有未被删除的记录。我尝试了上面的方法,但好像不起作用。
有什么想法吗?
Doctrine::getTable('myClass')->findByDeletedAt(null);
基本上,我想返回所有未被删除的记录。我尝试了上面的方法,但好像不起作用。
有什么想法吗?
Doctrine::getTable('myClass')->findByDeletedAt(null);
我尝试这个时出现了错误:
可捕获的致命错误:传递给Doctrine\ORM\EntityRepository :: findBy()的第1个参数必须是一个数组,而不是字符串
因此,这对我有用:
$repository->findBy(array('date_field' => null));
实际上,我觉得我试图过于花哨了。可以像这样完成:
Doctrine::getTable('myClass')->findBy('deleted_at',null);
我知道这篇文章比较老,但是提供的解决方案对于 Doctrine 1.2.x 并不正确。
当你使用以下函数时:
Doctrine::getTable('YourClass')->findByDeleted_at(null); //he want to get NOT DELETED rows!
-> findBy('deleted_at',null)
也会引发异常。 -> findBy('deleted_at','NULL')
也不正确,因为它被翻译成SQL: ... WHERE deleted_at ='NULL'
;... WHERE deleted_at IS NULL;
->findBySql()
方法:Doctrine::getTable('YourClass')->findBySql('deleted_at IS NULL', array());
* 第三个参数可以是水合模式。
希望这能帮助到某些人...
我知道这是老问题,但你的第一次尝试是错误的。对于一个名为 'deleted_at' 的字段,你应该这样做:
Doctrine::getTable('YourClass')->findByDeleted_at($val);
注意我只大写了字段“deleted_at”的第一个字母。