2016-10-17 4 views
0

id, car_id, typename 필드가있는 maintenance 테이블이 있습니다.다른 테이블에서 검색 하시겠습니까?

maintenance 테이블의 목록을 얻으려면 어떻게해야합니까? type = 'car wash'의 경우에만 model_id = 5?

model_id 필드는 car 테이블에 있습니다. 다음 표와 같은 자동차 테이블 : id, model_id, engine_sizecolor.

을 사용하면 car 테이블에 model_id과 일치하는 항목 목록을 가져올 수 있습니까? car 테이블과 연결되는 maintenance 테이블에 car_id이 있습니다.

다음과 같이해야합니까? 당신을 가정

return Maintenance::where('type', 'car_wash')->where(function($query) { 
     // get a list a maintenance where model_id = 5 in a car table 
    }); 
+0

알려 주시기 바랍니다. –

+0

@ chris85'maintenance' 테이블에는'car_id'가 있고'car'table에는'id'와'model_id' 필드가 있습니다. –

+0

Maintenance.php와 Car.php (모델 PHP 파일) 사이의 관계가 이미 설정되어 있기 때문에'-> join'을 사용해야한다는 것을 알지 못했습니다. –

답변

1

은 이미 그런 일을 시도 할 수 귀하의 유지 관리 모델에 자동차()의 관계를 정의했습니다 : 추가 질문에 대한

$model_id = 5; 
$type = 'car_wash'; 
return Maintenance::whereHas('cars',function($query) use($model_id,$type) { 
    $query->where('model_id',$model_id)->where('type',$type); 
    })->get(); 

업데이트 (생략 $ MODEL_ID = 0 경우) :

return Maintenance::whereHas('cars',function($query) use($model_id,$type) { 
     if($model_id!=0){ 
      $query->where('model_id',$model_id); 
     } 
     $query->where('type',$type); 
     })->get(); 

나는 그것을 테스트하지 못했지만 작동한다, 그렇지 않으면 나에게 그것은, 중복 다시 질문을 읽을 수있다

+0

작동하는 것 같습니다. 고마워요. 'model_id'가 0이라고 가정 해 봅시다. 어떻게'$ query-> where ('model_id', $ model_id)'를 건너 뛸 수 있습니까? –

관련 문제