Laravel 4:将whereIn子句添加到连接条件

时间:2014-11-13 16:34:19

标签: php join laravel eloquent where-in

我想运行以下查询

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 个答案:

答案 0 :(得分: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();