2014-02-21 6 views
0

좋아, 이제는 응용 프로그램 성능을 향상시키기 위해 열심히로드하려고합니다. 나는 서비스 데이터베이스에서 일하고 있지만 문제가 있습니다. 여기에 내 코드Laravel 4 eager loading - 모든 관계가 첫 번째로 반환 된 객체에 밀려납니다.

$service_data = Client::join('service_requests','clients.id','=','service_requests.client_id') 
    ->join('service_request_comments','service_requests.id','=','service_request_comments.service_request_id') 
    ->whereNotNull('service_request_comments.time')->with('service_requests')->with('service_requests.comments')->get(); 

쿼리가 제대로 데이터를 가져 않습니다,하지만 대신과는 Service_Request 객체를 service_requests 객체와 클라이언트 객체를로드 한 후로드의 첫 번째 client_object에 모든 service_requests 및 service_requests.comments로드 적절한 코멘트.

이러한 관계의 각

...A client can have many service_requests 
...A services_request can have many comments 
...and by extention... 
    ...A client can have many comments 

나는 제약 조건을 사용했지만, 그건 그냥 다양한 구문을 나에게 몇 다스 500S를 준 ... 많은 하나입니다. 누군가 내가 잘못하고있는 것을 말해 줄 수 있습니까?

+0

서버 오류가 발생하는 경우 질문에 해당 오류의 텍스트 또는 해당 텍스트의 샘플을 편집하는 것이 유용 할 수 있습니다. – halfer

답변

1

열심히로드하는 경우 조인을 사용하지 마십시오. 근본적으로 쿼리 작성기 명령을 Eloquent 기능과 결합하고 있으며 두 기능이 충돌합니다.

$service_data = Client::with('service_requests.comments')->get(); 

참고 중첩 된 with() 요청이 자동으로 열망로드 service_requests 다음 자신의 의견 : 이런 식으로 뭔가 같은 일 (지금은 where 제약 조건을 건너 뛰는)을 받아야합니다.

댓글 관계에 ​​대한 질문이 필요한 경우 몇 가지 방법이 있으며, 내가 뭘 사용하고 있는지 (또는 필요한 경우) 정확히 추측하고 싶지는 않습니다. 나는 그걸 지금 건너 뛸거야.

+0

감사합니다. 미안하지만 답변으로 표시 되려면 너무 오래 걸렸습니다. 다른 프로젝트로 옮겨졌고 방금 전에 다시 돌아올 때까지이 문제에 대해 잊어 버렸습니다. – Sidney