2
현재 3 개의 테이블 사이의 관계를 만들려고합니다.Laravel Model 3 테이블 간의 관계
Users
uid
username
Groups
gid
groupname
GroupMembers
uid
gid
웅변적인 ORM을 사용하면 어떻게 사용자 그룹을 얻을 수 있습니까?
Status 200
User uid 1
username mrwootwoot
Groups
{
gid 1
groupname administrators
}
{
gid 2
groupname wadmin
}
내가 지금까지 가지고하는 것은 :
: (관리자 난의 ... 키워드 구성원입니다 검색 그룹 :) 쿼리의 단지 1 라인나는 같은 JSON 응답을 반환하고 싶어
$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
위의 솔루션은 실제 Eloquent Relationships을위한 최상의 솔루션이 아닙니다. 다음 문서를 따르십시오. https://laravel.com/docs/5.4/eloquent-relationships#many-to-many –