2014-11-13 3 views
1

에 절은 내가 아래와 같이 노력 아래 쿼리Laravel 4 : 조인 조건

SELECT * FROM order_item JOIN order ON (order_item.order_id = order.id AND order.order_status IN ('payment_completed','refund_requested')) WHERE order_item.item_id=1; 

를 실행할 것을 특징으로 추가 할 수 있습니다.

OrderItem::join('order', function($join){ 
      $join->on('order.id','=','order_item.order_id'); 
      $join->whereIn('order.order_status',array('payment_completed','refund_requested')); 
    })->where('order_item.item_id','=','1')->get(); 

나는 이것이 잘못되었다는 것을 알고 있습니다. 조인 조건에서 whereIn 절을 사용하는 올바른 방법은 무엇입니까?

미리 감사드립니다.

+0

당신은 그렇게 할 수 없습니다. 'where'를'join' 절의 바깥에두면, 어쨌든 필요하지 않습니다. –

+0

감사합니다. @JarekTkaczyk. 그 후에 당신이 말한 것처럼 했어요. 하지만 그냥 어쨌든 where 절을 laravel에 조인 조건과 함께 포함하고 싶습니다. – siddiq

답변

0

지옥, 나는이 일을하는 또 다른 옵션이 있습니다.

FIND_IN_SET ('ABC', 'ABC, CDE, DEF, XYZ');

조건이 참이면 true를 반환하므로 조인 원인에이 조건을 추가 할 수 있습니다.

OrderItem::join('order', function($join){ 
     $join->on('order.id','=','order_item.order_id') 
     $join->on(\DB::raw("FIND_IN_SET(order.order_status,'payment_completed,refund_requested')"),"=",\DB::raw('"1"')); 

})->where('order_item.item_id','=','1')->get();