检索larval中帖子的用户信息的问题

时间:2016-10-15 15:10:46

标签: laravel eager-loading

因此,我在使用Laravel的热切加载检索信息时遇到了问题。 I.m试图将所有Post对象调用其尊重的用户添加到查询中。

这就是我所拥有的:

查询

public function index()
{
    $posts = Post::with('user')->get();



    return view('posts.index', compact('posts', $posts));
}

在我的用户和帖子模型中,我每个都定义了,我认为是合适的关系,在这里他们是完全正确的:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
use Notifiable;

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

public function posts() {
    return $this->hasMany('App\Post');
}
}

帖子是:

<?php

 namespace App;

use App\User;

use Illuminate\Database\Eloquent\Model;

class Post extends Model

{

protected $fillable = [
    'title', 'content', 'followers',
];

public function user() {

    return $this->belongsTo('App\User');
}
}

我得到的错误只是返回的帖子,没有关于用户的信息,例如他们的名字,我想在显示所有帖子时在帖子索引页面的循环中使用。

我错过了什么吗?

2 个答案:

答案 0 :(得分:1)

您可以直接在刀片视图中获取用户数据, 它会自动运行查询本身

交/ index.blade.php

$post->user->attributes

调用该方法时,它等同于

select * from user where user.id = post.user_id

答案 1 :(得分:0)

我解决了这个问题。我做得对,但在尝试打印用户名时,我使用以下代码$ post-&gt; name而不是$ post-&gt; user-&gt; name。抱歉。