2017-12-12 14 views
0

테이블에서 모든 레코드를 검색하려고하는데, 여기에는 주문이 supervisor과 연결되어 있습니다. OrdersSupervisorsbelongsToMany 관계와 연결되어 있고 피벗 테이블을 가지고 있습니다.쿼리 제약 조건을 가진 관계에서 레코드 검색

$supervisor = User::where('phone_number', $request->msisdn)->first(); 
      $orders = Order::with(['supervisors' => function ($query) { 
       $query->where('supervisor_id', $supervisor->id); 
      }])->get(); 

내가 얻을 대신 내가 다음 통지에 전달하고있어 주문의 컬렉션을 얻을 수 있지만, 기대 해요 : :

[2017-12-12 14:25:27] local.ERROR: Undefined variable: supervisor 

{"exception":"[object] (ErrorException(code: 0): Undefined variable: supervisor 

을하지

그래서 내 코드는 다음과 같이 보입니다 내가 뭘 잘못하고있어?

+0

$ 수퍼바이저를 블레이드에 전달하고 있지 않은 것으로 나타납니다. – Option

+0

안녕하세요, 블레이드 변수를 다루지 않습니다. 아래 답변은 질문에 올바르게 대답했습니다. 고마워요 :) – MoreCoffeePls

답변

3

당신은 기능이 비슷한, 나는이 사용하는 인터넷 검색 사람들을 위해

$orders = Order::with(['supervisors' => function ($query) use($supervisor) { 
       $query->where('supervisor_id', $supervisor->id); 
      }])->get(); 
+0

안녕하세요, 고마워요! 관련 주문 테이블에서 확인하기 위해 제약 조건을 추가하는 방법이 있습니까? 그래서 본질적으로 상사에게 속하는 모든 명령을 받고, 명령의 X 상태는 어디입니까? – MoreCoffeePls

+0

다음과 같은 의미입니까? $ orders = Order :: where ('status', '=', 'X') -> with ([ 'supervisors'=> function ($ query) { $ query-> where ('supervisor_id', $ supervisor-> id); }])> get(); –

+0

그런 것 같지만, 보류중인 모든 명령을 포착하고 피벗 테이블에서 supervisor_id를 신경 쓰지 않는 것 같습니다. 그래서 나는 ~ 3 행 밖에 기대하지 않을 때 20에 가까워지고 있습니다. – MoreCoffeePls

0

에 $ 책임자를 전달하는 데 사용을 사용해야하며 일 :

$supervisor = User::where('phone_number', $request->msisdn)->first(); 
      $orders = Order::whereHas('supervisors', function ($query) use($supervisor) { 
       $query->where('supervisor_id', $supervisor->id); 
      })->where('status', '=', 'pending')->get(); 

큰 감사를 p.wright에 대한 도움!