2014-10-17 13 views
0

내 laravel 응용 프로그램에서이 쿼리를 실행하고는,내림차순 모델 관계 laravel

$project = Project::leftJoin('organisation_user', 'organisation_user.organisation_id', '=', 'projects.organisation_id') 
       ->where('organisation_user.user_id', '=', ResourceServer::getOwnerId()) 
       ->whereNotNull('projects.organisation_id') 
       ->get(); 

이것은, 내가 다음 프로젝트 인 조직의 피벗 데이터에서이로드를 할 수있는 기대 데이터를 반환 관련 너무. 나는이 시점에서 할 걸려 무엇

$project->load('organisations');

조직에 대한 피벗 데이터 부하가 나는 관계를 통해 내려하려는처럼 가능, 내 머리가 보인다입니다.

답변

1

projectorganization 모델에 대해 다 대다 관계를 설정했다고 가정하면 조인을 건너 뛰고 한꺼번에 수행 할 수 있습니다.

$project = Project::has('organizations')->with(['organizations'=> function($query){ 
    $query->where('user_id', ResourceServer::getOwnerId()); 
}])->get(); 

또는 조금 변경하고 중첩 된 관계를 호출하십시오.

$organization = Organization::with('projects.organizations')->where('user_id', ResourceServer::getOwnerId())->first(); 

return $organization->projects; 

추가 피벗 테이블 데이터가 필요하면 관계에 withPivot()을 추가 할 수 있습니다.

+0

이것은 내가 원하는 것을 거의 본 것처럼 보입니다. - 그러나 (미안) - 프로젝트가 조직에 의해 소유 될 수 있으며 그 조직은 많은 수의 사용자를 가질 수 있습니다. 이것들은'organisation_user'라고 불리는 피벗 테이블에 저장되어 있습니다.이 샘플은'organisation_user.user_id'를 기반으로 쿼리 할 필요가 있습니다. – Udders

+0

나는 아직도 당신이하려고하는 것이 약간 혼란 스러울 지 모르지만 그 대답에 추가했습니다. 중첩 된 관계를 불러오는 것이 속임수 일 수 있습니다. –