Laravel 4: добавить условие whereIn к условию соединения

Я хочу выполнить запрос ниже

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 в условии соединения?

Заранее спасибо!

1

Решение

Черт, у меня есть еще один вариант сделать это.

Он вернет истину, если условие истинно, поэтому вы можете добавить это условие в причину соединения.

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();
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]