#php #laravel #laravel-5
#php #laravel #laravel-5
Вопрос:
У меня следующая ситуация…
Есть пользователи, которые принадлежат группам, и есть игры, которые принадлежат группам.
Я пытаюсь получить все группы пользователей, но он возвращает NULL.
У меня установлены следующие отношения:
Пользовательская модель:
public function groups(){
return $this->belongsToMany('AppGroup', 'group_user');
}
Групповая модель:
public function games(){
return $this->belongsToMany('AppGame');
}
public function users(){
return $this->belongsToMany('AppUser', 'group_user');
}
таблица group_user
Schema::create('group_user', function (Blueprint $table) {
$table->increments('id');
$table->integer('user_id');
$table->integer('group_id');
$table->timestamps();
});
Теперь я пытаюсь получить все группы от выбранного пользователя
$user = User::find(1);
$userGroups = $user->groups;
Таким образом, вместо $UserGroups, являющихся всеми группами пользователя, это NULL
(в таблице group_user есть запись, содержащая идентификаторы)
Комментарии:
1. если пользователи принадлежат многим группам, то разве в группах не должно быть много пользователей?
2. @chiliNUT Поправьте меня, если я ошибаюсь, но для этого требуется, чтобы у пользователя был group_id, который я хочу избежать, чтобы пользователи имели более одной группы
3. Для меня все выглядит правильно. Что
$user->groups()->get()
возвращает?4. @PaulSpiegel Вы, сэр, мой спаситель! Не могли бы вы объяснить мне, почему это так? Кроме того, опубликуйте это как ответ, чтобы я мог пометить его как правильный 😉
5. Итак, что он возвращает?
Ответ №1:
Вы пробовали это?
return $this->belongsToMany('AppUser', 'group_user','user_id', 'group_id');
Комментарии:
1. Да, я пробовал, Пол Шпигель предложил
$user->groups()->get()
, что сработало. Но спасибо за ваше предложение! 🙂
Ответ №2:
По предложению: Paul Spiegel
$user->groups()->get()
Сработало! Спасибо 🙂