2010-10-05 74 views
3

我想知道是否有反正使用教義的魔術方法來查找空值。例如:教義findby魔法空值

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

本質上,我想返回所有未被刪除的記錄。我已經嘗試了以上,但它似乎並沒有工作。

任何想法?

回答

1

其實,我想我是想要看上。這是可以做到這樣的:

Doctrine::getTable('myClass')->findBy('deleted_at',null); 
0

我知道這是舊的,但你的第一次嘗試是不正確的。對於一個場「deleted_at」你應該一直在做這樣的:

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

通知我只是資本領域的「deleted_at」的第一個字母。

+2

我不認爲這是正確的隊友 - 它camelcases整個字符串。 – Burgi 2011-11-22 18:14:06

+0

它不需要camel基於 – regomodo 2011-12-23 19:01:53

3

嘗試這給我的錯誤:

Catchable fatal error: Argument 1 passed to Doctrine\ORM\EntityRepository::findBy() must be an array, string given

所以這對我的作品:

$repository->findBy(array('date_field' => null)); 
+0

好吧,OP談論主義1,你在使用主義2,所以錯誤是*正常*。 – j0k 2013-01-31 09:48:09

+0

我看到>問10年10月5日在23:45 <有點晚了,問題仍然是最新的壽! :-D – DanFromGermany 2013-01-31 10:33:53

0

我知道這是舊的,但提供的解決方案是不正確的教義1.2.x的

當您使用類似功能:

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

準則拋出錯誤:「您必須指定要查找的值」,因爲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。

希望能幫助別人...