为什么Eloquent HasMany返回一个空集合?

时间:2019-05-19 11:38:23

标签: laravel eloquent

嗨,为什么我在使用$ user-> posts作为属性时得到一个空集合。但是,当我使用$ user-> posts()作为函数时,我会执行get收集。

    public function user(){
        return $this->belongsTo(User::class);
    }

    public function posts(){
        return $this->hasMany(Post::class);
    }

    public function index(User $user){
        dd($user->posts);
         return view('home', compact('user'));
    }

    @foreach($user->posts as $post)
        <p>$post->title</p>
        <p>$post->body</p>
    @endforeach
result
Collection {#1102 ▼
  #items: []
}

2 个答案:

答案 0 :(得分:2)

第一种方法(user)应该在您的post模型中。

第二种方法(posts)应该在您的user模型中。

检查数据库,查看posts表是否有一个名为user_id的列。

检查您的数据库,查看user_id列是否具有有效值(根据users表。

还要确保您的路线中有{user}。像这样:

Route::get('home/{user}', 'Cotroller@method')

答案 1 :(得分:0)

用户模型:

public function posts(){
    return $this->belongsTo(User::class);
}

发布模型:

public function user(){
    return $this->hasMany(Post::class);
}

并确保您的user_id表上有post