Какими должны быть отношения?
У меня есть две модели: Users
и Categories
.
Мне нужно получить все категории, на которые подписался пользователь.
Do, структура базы данных:
User Category UserCategory
___ _________ __________
id id | name category_id user_id
Модель категории:
public function user()
{
return $this->belongsToMany('AppUser', 'user_id', 'id');
}
Модель пользователя:
public function categories()
{
return $this->belongsToMany('AppCategory');
}
Я попытался получить все категории, на которые пользователь подписался через третью таблицу:
$categories = Category::with("user")->where("id", Auth::user()->id)->get();
Это не работает для меня
1 ответ:
Чтобы получить все категории, принадлежащие пользователю, используйте
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'); }