Laravel 结合查询和 if 语句

Laravel combine query with if statement

我正在使用 AJAX 进行产品过滤。有什么方法可以使用查询生成器生成与下图所示相同的输出吗?

我试过联合,但没用。

在 laravel 中,您可以为产品创建模型 Product。然后查询将像

$products = Product::where('product_status', '1');
if ($request->input('minimum_price') && $request->input('maximum_prize')) {
    $products = $products->whereBetween('product_prize', array($request->input('minimum_price'), $request->input('maximum_prize')));
}
if ($request->input('brand')){
    $brand_filter = implode("','", $request->input('brand'));
    $products = $products->whereIn('product_brand', $brand_filter);
}
$products = $products->get();

执行后$products包含查询后的商品。

我希望这个例子能提供思路,试试这个

使用多个 if 语句并使用连接将数据导入数据库。

function datatables($request) {
        $data = $this->leftJoin('blog_category', 'blog_category.blog_category_uuid', '=', 'blog_detail.blog_category_uuid')
                ->where('blog_detail.blog_detail_is_deleted', 'NO');

        if ($request->search['value'] != null && $request->search['value'] != '') {
            $keyword = $request->search['value'];
            $data = $data->where(function($query) use ($keyword) {
//                $query->orWhere('activity_type.activity_type_name', 'LIKE', '%' . $keyword . '%');
                $query->orWhere('blog_detail.blog_detail_title', 'LIKE', '%' . $keyword . '%');
            });
        }
        if (isset($request->order[0]['dir'])) {
            $data = $data->orderBy('blog_detail.blog_detail_id', $request->order[0]['dir']);
        } else {
            $data = $data->orderBy('blog_detail.blog_detail_created_date');
        }
        $datacount = $data->count();
        $dataArray = $data->select('blog_detail.*', 'blog_category.blog_category_name' , DB::raw('DATE_FORMAT(blog_detail.blog_detail_created_date,"%Y-%m-%d") as blog_detail_date'));
        if ($request->length == -1) {
            $dataArray = $dataArray->get();
        } else {
            $dataArray = $dataArray->skip($request->start)->take($request->length)->get();
        }
        return [$datacount, $dataArray];
    }