【问题标题】:Laravel 4.1: View does not echo query even though controller passes correct jsonLaravel 4.1:即使控制器传递了正确的 json,视图也不会回显查询
【发布时间】:2014-01-30 23:41:29
【问题描述】:

我正在学习有关 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>

它与教程中显示的完全一样,但它不起作用。

非常感谢您的帮助。

谢谢。

【问题讨论】:

  • 也许可以试试 {{ $user->photo()->id }}
  • 嗯这也不起作用..

标签: php json laravel laravel-4 blade


【解决方案1】:

您最喜欢在 User 模型中使用 hasMany 关系。当使用hasMany 关系时,它将返回一个Collection 对象,而不是您的模型本身。查看 Collection 对象的 API,您会发现许多有用的方法。

你应该做的是这样的事情。

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

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

echo $user->photo;

【讨论】:

  • { 回声 $photo; } { 回声 $photo; } { 回声 $photo; } { 回声 $photo; }
  • 这就是我得到的结果。注意:用户有 4 张照片,所以它必须对照片做任何事情。
  • 这是我现在使用的。 @foreach ($user->photo->all() as $photo) { {{ $photo->id }} } 我得到的输出是这样的:{ 1} { 3} { 7} { 8}
猜你喜欢
  • 1970-01-01
  • 2020-01-24
  • 2021-04-23
  • 2015-06-12
  • 2015-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多