Laravel 4.1:即使控制器传递了正确的json,View也不会回显查询

时间:2014-01-12 02:55:35

标签: php json laravel laravel-4 blade

我正在关注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>

完全如教程中所示,但它无法解决。

我非常感谢一些帮助。

感谢。

1 个答案:

答案 0 :(得分:0)

最像您在用户模型中使用hasMany关系。使用hasMany关系时,它将返回Collection对象,而不是模型本身。看一下Collection对象的API,你会发现许多有用的方法。

你应该做的就是这样。

foreach ($user->photo->all() as $photo)
{
    echo $photo;
}

或者,如果您的用户只有一张照片,请将用户模型中的关系更改为hasOne。然后就可以像现在一样使用它。

echo $user->photo;