2016-06-30 3 views
2

: 사용자, 소유자, 그룹,관계 - Laravel 웅변 4 테이블이 있습니다

는 소유자와 요청 사이 직접 관계가 없습니다 내가 뭔가를 할 수있는 방법을 찾고 있어요 요청 $ onwer-> 요청과 같이 소유자와 관련된 모든 요청을 가져옵니다. 그룹 (A ~ 내/관련) 각 그룹은, 요청이 사용자에 의해 생성됩니다 소유자가 소유,

모든 사용자가 그룹에 각각의 요청은입니다 : 여기

상황이 작동하는 방법이다.

표는 다음과 같습니다
소유자 : 아이디, 이름
그룹 : ID, 이름, OWNER_ID, 올해 사용자 : 아이디, 이름
는 GROUP_USER : ID는, GROUP_ID는
요청을 USER_ID : 아이디, group_id, user_id, desc

소유자와 그룹 간 또는 요청과 사용자간에 관계를 쉽게 만들 수 있지만 모든 관련 요청을 소유자에게 보내려면 어떻게해야합니까? 또 다른 것은 내가 모든 요청을 그룹 에있는 진술 년 = 무언가와 같은 곳에있는 소유자에게 속할 수 있어야한다는 것입니다.

그룹과 요청 사이의 많은 관계로 하나가있다, 그래서이 그룹에서 모든 요청을 얻을 수 있습니다 : 지금은 이런 멍청한 짓을하고 있어요 들어

.(그룹 hasMany의 요청) 같은 일을 찾고 다른 사람을 위해

$groups = Group::where('owner_id', $owner_id)->get(); 

foreach($groups as $group) 
    foreach($group->requests as $request) 
     if($request->year == 2016) 
      $requests[] = $request; 
+1

아마도 당신은'hasManyThrough'를 찾고있을 것입니다. 당신은 $ this-> hasManyThrough (\ App \ Request :: class, \ App \ Group :: class);를 리턴 할 수 있습니다. 그것은 "나는 소유자 클래스인데 그룹 엔터티를 통해 많은 요청을받습니다."라고 말합니다. 당신의'group'은 이미'owner_id'를 가지고 당신의 요청은'group_id'를 가지고 있기 때문에 작동 할 것입니다. –

+0

예, 그 일을했습니다. 고맙습니다. 나는 정말로 * laravel 문서에서 많은 부분을 * 읽지 못하는 이유를 모르겠다. – Ravexina

답변

1

,이 뒤에 개념은 Laravel에 의해 hasManyThrough라고합니다. 이 경우

, 우리는 Group 클래스를 통해 소유자의 클래스 모델

public function requests() { 
    return $this->hasManyThrough(\App\Request::Class, \App\Group::Class); 
} 

여기에서의 로직 OwnerRequests (1 매개 변수)를 많이 가지고 있다는 것입니다 에서 다음과 같은 기능을 할 것이다 (두 번째 매개 변수).