2014-02-27 2 views
0

관련 코드는 다음과 같습니다 나는 데이터베이스에 유사한 구조의 테이블을 조회 자원 컨트롤러, 중첩 된 https://gist.github.com/morganhein/9254678쿼리 ORM과 WHERE 절 -에 설득력/Laravel 4

.

www.example.com/v1/jobs/1/departments로 이동하면 작업 1과 관련된 모든 부서를 쿼리하려고합니다. 그러나 ORM을 사용하여 수행하는 방법을 파악할 수 없습니다.

도움 말?

+0

당신의'jobs' 표는'departments'로 선언 realationship을 가지고 있지 않습니다

또한 당신은 당신이 항상 호출 할 수있는 모든 관련 부서와 작업의 목록을 얻을하려는 경우. 'Jobs' 모델에서이 작업을 수행해야합니다. –

+0

내 jobs.php (모델)에, 혼란 스러워요 그 상태 : \t 공공 기능 부서() \t { \t \t 반환 $ this-> hasMany의 ('부'); \t} 내가 필요한 것은 아닙니다. – Morgan

+0

있어야합니다. 그런 식으로 작동하지 않습니까? 그렇지 않은 경우 모델 코드도 게시하십시오. –

답변

1

나는 테스트하지 못했지만, 나는 이런 식으로 뭔가를 시도 할 제안 : 그 후

Route::resource('/v1/jobs/{id}/departments', 'DepartmentController');  
Route::resource('/v1/jobs', 'JobController'); 

를, 당신의 DepartmentController 방법은 귀하의 경우에는 작업 ID를 하나 개 인수를 받게됩니다. id을 사용하여 특정 모델을 검색하는 경우 find() 메서드를 사용하는 것이 더 쉽습니다. 모델을 발견하면 관련 모델에 액세스 할 수 있습니다.

class DepartmentsController extends BaseController { 

    /** 
    * Display a listing of the resource. 
    * 
    * @return Response 
    */ 
    public function index($jobId) 
    { 
     Clockwork::startEvent('List_Default_Departments', 'Starting.'); 
     $positions = Auth::user()->jobs()->find($jobId)->departments; 
     Clockwork::endEvent('List_Default_Departments', 'Done.'); 
     return Response::json($positions->toArray()); 
    } 
} 

참고 : $job->departments() 사이 다른 (반환 빌더 객체가 더 복잡한 쿼리를 만들 수)와 $job->departments가 (직접 컬렉션 객체를 반환)가있다.

$jobs = Auth::user()->jobs()->with('departments')->get(); 
+0

감사합니다. 그러나 afaik는 find() 함수가 기본 키에 대한 $ jobId의 인덱스 값을 찾는 데 도움이되지만 $ jobId는 고유하지 않고 기본 키가 아닙니다 (그러나 해당 사용자에게는 고유합니다). – Morgan

+0

좋습니다. 어쨌든'Auth :: user() -> jobs() -> ('job_id', $ jobId) -> ('departments'-> get(); – cheelahim