应该是什么样的关系?

时间:2017-03-17 16:17:51

标签: laravel laravel-5.3 laravel-5.4

我有两个模型:UsersCategories

我需要获得用户订阅的所有类别。

数据库结构是:

User    Category   UserCategory
___     _________  __________
id      id | name  category_id user_id

类别模型是:

 public function user()
    {
        return $this->belongsToMany('App\User', 'user_id', 'id');
    }

用户模型是:

public function categories()
    {
        return $this->belongsToMany('App\Category');
    }

我试图通过第三个表格获取用户订阅的所有类别:

$categories =  Category::with("user")->where("id", Auth::user()->id)->get();

它对我不起作用

1 个答案:

答案 0 :(得分:2)

要获取属于该用户的所有类别,请使用whereHas()方法:

$categories = Category::whereHas('users', function($q) use($userId) {
    $q->where('id', $userId);
})->get();

另外,请确保表格名称为categories_users并定义users这样的关系:

public function users()
{
    return $this->belongsToMany('App\User');
}