2015-01-24 5 views
2

이 질문은 Laravel Documentation에서 제공되는 예제 Eloquent : Working With Pivot Tables을 확장합니다.Laravel 동일한 두 모델 간의 직접 및 간접 관계

나는 응용 프로그램에서 다음과 같은 관계가 필요합니다

User belongsToMany Role 
Role belongsToMany Task 
User belongsToMany Task 
User belongsToManyThrough Role->Task (Task through Role) 
  • 그래서 사용자가 Task에 중 직접 Role, 또는를 통해 관련 수 있습니다.
  • 모든 관계는 다 대다입니다. A와 관련

    • 모든 작업 :

    나에게 불분명 부분은 내가 얻을 같은 열망 로딩 같은 일을 사용할 수 있도록 내가 모델에서 이러한 설정해야하는 방법이다 Y는 이하에서 어떻게해야 X 및 사용자의 사용자 예를 들어

관련된 직접

  • 모든 작업에 관한 역할
  • 모든 작업을 통해 사용자 이 모든 관계를 가능하게하려면?

    class User extends Eloquent { 
    
        public function tasks() 
        { 
         return x; 
        } 
    } 
    
    class Task extends Eloquent { 
    
        public function users() 
        { 
         return y; 
        } 
    } 
    
  • 답변

    0

    나는 한 번 belongsToManyThrough에 문제가 있었고,이 코드를 사용하여 그것을 해결 :

    public function Roles() 
    { 
        $task_ids = DB::table('tasks_users')->where('user_id', $this->id)->lists('task_id'); 
        $role_ids = DB::table('tasks_roles')->whereIn('task_id', $task_ids)->lists('role_id'); 
        return Roles::whereIn('id', $role_ids)->get(); 
    } 
    

    을 나는 그것이 기능 belongsToManyThrough를 사용하지 않을 것을 알고 그것은 가장 최적화 된 방법은 아니지만 노력하고 있습니다. :)

    관련 문제