首页 > 解决方案 > 为什么 Eloquent HasMany 返回一个空集合?

问题描述

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

    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: []
}

标签: laraveleloquent

解决方案


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

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

检查您的数据库并查看 posts 表是否有一个名为user_id.

检查您的数据库并查看该user_id列是否具有有效值(根据userstable.

还要确保您的路线{user}在其中。像这样的东西:

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

推荐阅读