В настоящее время я пытаюсь установить связь между 3 таблицами.Laravel Model Relations между 3 таблицами
Users
uid
username
Groups
gid
groupname
GroupMembers
uid
gid
С красноречивым ORM, как получить группы пользователей?
С помощью всего 1 строки запроса Я хотел вернуть JSON ответ, как: (поиск группы, что я являюсь членом ... ключевого слова: Admin)
Status 200
User uid 1
username mrwootwoot
Groups
{
gid 1
groupname administrators
}
{
gid 2
groupname wadmin
}
То, что я получил до сих пор является:
$joined_networks = User::whereHas('groups', function($q)
{
$q->where('is_blocked', '=', 0)->where('name','like',"%admin%");
})->with('groups')->where('uid', $user_id)->get();
(...)
return Response::json(array(
'status' => 200,
'user' => $joined_networks->toArray()
));
Эта часть кода представляет собой группу, в которой пользователь является членом того, где он не заблокирован.
обновление
$joined = User::with('group')->where('uid', $user_id)->get();
return Response::json(array(
'status' => 200,
'results' => $joined
));
и моя модель пользователя:
public function group()
{
return $this->hasManyThrough('Group', 'GroupMembers', 'uid', 'gid');
}
Теперь он просто ничего не возвращает
{
"status": 200,
"results": {
}
}
обновление
$user = User::find($user_id);
$user_groups = $user->groups();
return Response::json(array(
'status' => 200,
'results' => $user_groups
));
Но все же, как и выше, никакого результата не отдается обратно.
обновление Это была ошибка на выходе. $ user_groups-> toArray() является правильным. Хорошо работает сейчас.
Обновлен мой ответ ... – madziikoy
Выше решение - не лучшее решение для реальных отношений с мужчинами. Пожалуйста, следуйте документам: https://laravel.com/docs/5.4/eloquent-relationships#many-to-many –