簡體   English   中英

在laravel中檢查查詢中的條件

[英]check condition within query in laravel

$q = Order::select(
                'orders.*',
                'items.date_start',
                'items.date_end',
                'items.location_name',
                'items.category_id'
            )
            ->join('items', 'items.item_id', '=', 'orders.item_id')
            ->leftJoin('orders_items', function ($join) use ($user_id)
            {
                $join->on('orders_items.order_id', '=', 'orders.order_id')
                    ->on('orders_items.item_id', '=', 'orders.item_id')
                    ->where('orders_items.user_id', '=', $user_id);
            })
            ->with('Items')
            ->where(function ($query) use ($select_balance) { // This is where event is in the future, or it has a balance and is not draft.
                $query->where('items.date_end', '>=', Carbon\Carbon::now()->toDateString())
                    ->orWhere(function ($query) use ($select_balance) {
                        $query->where(DB::raw($select_balance), '>', 0)
                            ->whereNotIn('orders.status', [0, 79]);
                    });
            });

我想設置一個條件,如果(date_start == date_end)那么

$query->where('items.date_end', '>=', Carbon\Carbon::now()->toDateString())
                    ->orWhere(function ($query) use ($select_balance) {
                        $query->where(DB::raw($select_balance), '>', 0)
                            ->whereNotIn('orders.status', [0, 79]);
                    });

else 

$query->where('items.date_end', '>', Carbon\Carbon::now()->toDateString())
                    ->orWhere(function ($query) use ($select_balance) {
                        $query->where(DB::raw($select_balance), '>', 0)
                            ->whereNotIn('orders.status', [0, 79]);
                    });

如何在查詢中設置條件我嘗試在-> with(items)之后結束查詢,但是說$ q->有語法錯誤,請引導並解釋如何克服此問題

您可以使用條件子句: https : //laravel.com/docs/5.5/queries#conditional-clauses

Animals::when($condition, function($query) {
    $query->where('size', 'big');
})->when(!$condition, function($query)) {
    $query->where('size', 'small');
})->get();

在示例中,如果$conditiontrue則獲取大型動物,否則獲取小型動物。

暫無
暫無

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

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