2016-07-21 6 views
0

의 조건을 기반으로 쿼리 나뿐만 쿼리가있는 경우 :laravel

$Category = DB::table('food') 
    ->select('food.Food_id','food.FoodName','categories.CategoryName') 
    ->join('categories','categories.Category_id','=','food.Category_id') 
    ->where('categories.CategoryName', '=','Breakfast') 
    ->get(); 

을하지만 종류가 있다면 카테고리가 아침 식사의 경우, 아침 식사와 관련된 유일한 식품이 표시되는 것을 의미 조건 경우 쿼리를 기반으로 원하거나 점심 식사를하면 해당 카테고리와 관련된 음식 만 표시됩니다. 사용하고 있습니다. laravel 5.2

+0

원하는대로 작동합니다. 무엇이 문제입니까? –

+0

@Kusum에서 만든 편집 내용에 오류가 있습니다. 실행 취소하십시오. – mastazi

+0

@ mastazi 어디서 실수했는지 알 수 있습니까? – Kusum

답변

0

다음과 같이 시도해보십시오. 쿼리를 한 번에 만들 필요는 없습니다. 여러 단계를 통해 결합 할 수 있습니다. get(), find() 또는 그와 비슷한 것을 수행 할 때까지는 쿼리 결과를 반환하지 않지만 잘못된 경우 쿼리 작성기 개체 만 반환합니다.

// You should probably send this as a method parameter so you can determine if you should get one, or the other category 
$cat = 1; 

$Category = DB::table('food') 
    ->select('food.Food_id','food.FoodName','categories.CategoryName') 
    ->join('categories','categories.Category_id','=','food.Category_id'); 
if($cat == 0){ 
    $Category = $Category->where('categories.CategoryName', '=','Breakfast');  
} 
if($cat == 1){ 
    $Category = $Category->where('categories.CategoryName', '=','Lunch'); 
} 
$Category = $Category->get(); 
+0

보기와 같이 질의를 해독 할 수는 있지만이 경우에는 단지 [...] -> where ('categories.CategoryName', '=', $ cat);'if 문을 사용하지 않고 – mastazi

+0

물론, '$ cat' 변수의 내용이 무엇인지 모르기 때문에 일반적인 예입니다. . 정수가 될 수도 있고 무엇이든간에 '스위치'가 더 나은 해결책이 될 수 있습니다. 그러나 어떻게 작동하는지 보여줄 수 있습니다 :) –

+0

이 쿼리는 나에게 아침과 점심의 음식 항목을 모두 제공합니다. –