2017-07-15 43 views
2

有關於我的問題,很多的問題,但它從來都不是我遇到的情況,所以在這裏我的代碼:試圖讓Laravel非對象的性質,儘管在同一個地方工作

<td>{{ $note->title}}</td> 
<td>{{ App\User::where('id', $note->user)->first()->name }}</td> 
<td>{{ date("d.m.Y H:i:s", strtotime($note->created_at)) }}</td> 
<td>{{ date("d.m.Y H:i:s", strtotime($note->updated_at)) }}</td> 

一切正常到目前爲止,除了

<td>{{ App\User::where('id', $note->user)->first()->name }}</td> 

我想通了,問題是$note->user,它拋出

(2/2)ErrorException 試圖讓非對象

的財產沒有任何意義,我因爲$note->title上方,就像一個魅力$note->created_at工作。有任何想法嗎?

+0

僅供參考,如果'$ note'雄辯地模型'created_at'和'updated_at'應該'碳膜情況下,所以你應該能夠調用它們的格式例如'$ note-> updated_at-> format('d.m.Y H:i:s')'。 http://carbon.nesbot.com/docs/#api-formatting –

+0

@RossWilson非常感謝。沒有意識到這一點! – John

+0

請你可以顯示返回這個視圖的'Route'或者controller方法嗎? –

回答

2

您應經常檢查用戶是否存在:

$user = App\User::where('id', $note->user)->first(); 

然後在視圖:

{{ is_null($user) ? 'No user with specified ID' : $user->name }} 

此外,它是在一個視圖中使用洋洋灑灑一個可怕的想法。

+1

請詳細說明'$ user = App \ User ::'應該放在哪裏('id',$ note-> user) - > first();'爲什麼在視圖中使用Eloquent是一個糟糕的主意? – John

+1

而且,當然,在視圖中使用什麼。 – John

0

您需要先檢查用戶的存在性,然後再詢問其名稱。

你也可以利用雄辯的關係,它會從你的視圖中刪除用戶檢索。

添加一個用戶關係的Note模型

public function user() 
{ 
    return $this->belongsTo(\App\User::class, 'user'); 
} 

然後在你看來,你可以調用$note->user如果找到否則null將返回一個App\User實例。

所以打印用戶名

<td>{{ $note->user ? $note->user->name : '' }}</td>