2015-11-11 28 views
2

的財產當我嘗試確定對象是否爲空,它告訴我:Laravel得到非對象

試圖讓

我正在做這樣的非對象的屬性:

$lastTicket = Auth::user()->ticket->last()->ticketid; 
    if($lastTicket->isEmpty()) 
    { 
     $lastTicket = 0; 
    } 

很明顯Auth :: user() - > ticket-> last();還沒有記錄。我應該怎麼做?我正在和Laravel合作。

+0

根據你上面的內容,'ticketid'是屬性而不是對象。因此你不能在'$ lastTicket'上使用對象符號或者調用' - > isEmpty();'方法。 – War10ck

回答

1

首先看看here如果能在你的問題的解決方案。不管怎樣,如果你嘗試加載的關係,你應該看看official documentation

動態屬性

雄辯允許您通過動態屬性訪問你的關係。雄辯會自動爲你加載關係,甚至足夠聰明地知道是調用get(用於一對多關係)還是第一種(用於一對一關係)方法。然後可以通過與關係相同的名稱通過動態屬性進行訪問。例如,下面的模型$電話:

class Phone extends Eloquent { 

    public function user() 
    { 
     return $this->belongsTo('User'); 
    } 

} 

$phone = Phone::find(1); 

而不是呼應了用戶的電子郵件這樣的:

echo $phone->user()->first()->email; 

它可以被簡單地縮短:

echo $phone->user->email; 
2

你需要檢查該集合不爲空之前獲得的財產:

if(Auth::user()->ticket->last()->isEmpty()) 
    { 
     $lastTicket = 0; 
    } 
    else 
    { 
     $lastTicket = Auth::user()->ticket->last()->lastId; 
    } 

簡而言之方式:

$lastTicket = !Auth::user()->ticket->last()->isEmpty() ? $lastTicket = Auth::user()->ticket->last()->lastId : 0; 
+0

感謝您的回覆,但是當我這樣做,它告訴我:調用未定義的方法照亮\數據庫\查詢\生成器::的isEmpty() – Jamie

+0

如果最後一個()的關係是OneToOne這種結構必須工作:$ lastTicket =空( Auth :: user() - > ticket-> last())? $ lastTicket = Auth :: user() - > ticket-> last() - > lastId:0; – ClockworkOrange

+0

當我嘗試:$ lastTicket = Auth :: user() - > ticket-> last() - > ticketid; 如果($ lastTicket->的isEmpty()){ $ lastTicket = 1; } var_dump($ lastTicket); – Jamie

0

的正確答案是:

$lastTicket = !Auth::user()->ticket->last() ? Auth::user()->ticket->last()->ticketid+1 : 0; 

,因爲如果它是空的,它將返回0作爲默認值。