在laravel中查询查询条件

时间:2018-01-02 07:58:58

标签: php mysql 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]);
                    });
            });

我想设置条件if(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->有语法错误请指导和解释如何克服这个问题

1 个答案:

答案 0 :(得分:0)

您可以使用条件子句: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,那么我们就会获取大型动物,否则我们会抓取小动物。