2015-03-31 145 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));