2015-03-31 55 views
1

使用動態屬性我有一個dynamic propertyuser在我的模型:Laravel 5 - 鑑於

class Training extends Model 
{ 
    ... 

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

而且我可以很容易得到用戶名在控制器這樣的:

Training::find(1)->user->name 

但我不知道如何執行相同的視圖。我嘗試這樣做:

控制器:

return view('training/single', Training::find(1)); 

查看:

{{ $user->name }}; 

但沒有成功,我得到錯誤Undefined variable: user。所以看起來我無法訪問視圖中的動態屬性。

任何想法如何在視圖中使用動態屬性?

回答

3

我擔心這是不可能的。沒有辦法在視圖中將$this上下文設置爲模型。您可以將模型轉換爲toArray()的數組,但會包含相關模型,您必須使用$user['name']訪問它。

我個人只需要聲明的用戶變量明確:

$training = Training::find(1); 
return view('training/single', ['training' => $training, 'user' => $training->user]); 
+0

不幸的是,我不是清楚我的問題。您可以傳遞鍵值或對象的數組來查看。所以我傳遞了具有動態屬性''user''的對象''Training''。例如,來自問題I的代碼可以訪問''user_id''屬性,但不能訪問動態的''user''。 – 2015-03-31 14:31:10

+0

啊,我看到......誤讀了。我會尋找解決方案:) – lukasgeiter 2015-03-31 14:32:24

+1

嗯。我擔心這不是真的可能。您可以將模型轉換爲數組,但會包含相關模型。你不能只在你的視圖中做'$ training-> user-> name',或者顯式傳遞用戶'['user'=> Training :: find(1) - > user]'? – lukasgeiter 2015-03-31 14:38:24

0

使用eager loading

return view('training/single', Training::with('user')->find(1));