簡體   English   中英

Laravel 4:將whereIn子句添加到聯接條件

[英]Laravel 4: add whereIn clause to a join condition

我想運行以下查詢

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子句的正確方法是什么?

提前致謝!

地獄,我還有另一種選擇。

您可以使用FIND_IN_SET('ABC','ABC,CDE,DEF,XYZ');

如果條件為true,它將返回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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM