[英]Check if hydrated doctrine result is NULL
我正在嘗試檢查DQL中的結果是否為NULL。
我收到以下DQL查詢:
$q = self::createQuery("l")
->select('i.*, s.aantal, m.naam, c.cat_naam, a.app_id')
->from('InstalledBase i, i.Spare s, i.Apparaat a, a.Categorie c, a.Merk m')
->execute();
return $q;
現在我想檢查s.aantal是否為NULL,所以我這樣做:
if(is_null($installedbase->Spare->spare_id))
當變量不是null時,一切正常,但是當它實際上為NULL時,我收到E通知消息:
Notice: Trying to get property of non-object in \installedbase\templates\_index.php on line 29
它確實看到它為空,因為執行了if條件。
奇怪的是,我正在另一頁上做完全相同的事情,它沒有問題。 但是我一定在做錯事或愚蠢的事,因為這些消息通常不會無所作為。
那么有人可以向我解釋嗎? :)
我真的不熟悉DQL,但是您可以將if
語句擴展到;
if (!is_object($installedbase->Spare) || is_null($installedbase->Spare->spare_id))
怎么樣....
if(isset($installedbase->Spare->spare_id)) {
if(is_null($installedbase->Spare->spare_id)) {
// do something
}
}
...或者也許嘗試使用PHP get_object_vars函數,例如:
if(!empty(get_object_vars($installedbase->Spare)) && is_null($installedbase->Spare->spare_id)) {
// do something
}
我不太清楚的是,您是如何從s.aantal獲取spare_id的。
是否真的需要檢查它是否嚴格為空?
if ($q) ...
在大多數情況下應該足夠了。 看一看PHP類型比較表 。
另外,您可能對Doctrine_Null感興趣:
final class Doctrine_Null
{
public function exists()
{
return false;
}
public function __toString()
{
return '';
}
}
您是否不應該離開加入i.Spare?
所以:
$q = self::createQuery("l")
->select('i.*, s*, m.naam, c.cat_naam, a.app_id')
->from('InstalledBase i')
->leftJoin('i.Spare s')
->innerJoin('i.Apparaat a, a.Categorie c, a.Merk m')
->execute();
return $q;
除非spare_id不是主鍵。 然后也許將select語句更改為我所做的事情可能會有所幫助,然后將其添加到您的測試中:
if(isset($installedbase->Spare) && is_null($installedbase->Spare->spare_id))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.