我正在关注Laravel 4的教程,但我陷入了困境。我想返回一个显示用户照片的视图。为此,我在我的控制器中有以下方法:
public function show($id)
{
$user = User::whereId($id)->with('photo')->first();
return View::make('authenticated.users.show', compact('user'));
}
如果我返回$ user,我在浏览器中看到的json似乎完全正确。
但是,如果我尝试在show.blade.php视图中显示它,我收到此错误:
Undefined property: Illuminate\Database\Eloquent\Collection::$id
我在视图中使用的代码如下:
<li>{{ $user->photo->id }}</li>
完全如教程中所示,但它无法解决。
我非常感谢一些帮助。
感谢。
答案 0 :(得分:0)
最像您在用户模型中使用hasMany
关系。使用hasMany
关系时,它将返回Collection
对象,而不是模型本身。看一下Collection对象的API,你会发现许多有用的方法。
你应该做的就是这样。
foreach ($user->photo->all() as $photo)
{
echo $photo;
}
或者,如果您的用户只有一张照片,请将用户模型中的关系更改为hasOne
。然后就可以像现在一样使用它。
echo $user->photo;