【问题标题】:How to join Product filter query in Laravel Controller?如何在 Laravel Controller 中加入产品过滤器查询?
【发布时间】:2021-07-14 14:22:19
【问题描述】:
   $maincategory=Maincategory::find($id);
   if (isset($_GET['brands'])) {
        $brandarray = implode(",", $_GET['brands']);
        $q->whereIn('products.brand',[$brandarray]);
    }
    if (isset($_GET['discount'])) {
        $from=min($_GET['discount']);
            if(in_array("0",$request->discount) && count($request->discount)==1){
                $to='10';
            }else{
                $to='100';
            }
        $q->whereBetween('products.discount',[$from,$to]);
    }
    if (isset($_GET['sortby'])) {
        if($_GET['sortby']=='discount'){
            $q->orderBy('products.discount', 'DESC');
        }elseif($_GET['sortby']=='hightolow'){
            $q->orderBy('products.actual_price', 'DESC');
        }elseif($_GET['sortby']=='lowtohigh'){
            $q->orderBy('products.actual_price', 'ASC');
        }else{
            $q->orderBy('products.id', 'DESC');
        }
        
    }
    if (isset($_GET['minprice'])) {
        $q->whereBetween('products.actual_price',array($_GET['minprice'],$_GET['maxprice']));
    }
    if (isset($_GET['color'])) {
        $colors = implode(",", $_GET['color']);
        $q->whereIn('products.color',[$colors]);
    }
    
    $productdata= Product::leftjoin('maincategories', 'maincategories.id', '=', 'products.main_category')
    ->leftjoin('secondcategories', 'secondcategories.id', '=', 'products.second_category')
    ->leftjoin('thirdcategories', 'thirdcategories.id', '=', 'products.third_category')
    ->leftjoin('brands', 'brands.id', '=', 'products.brand')->select('products.*', 'maincategories.id as main_category_id', 'maincategories.url as main_category_url', 'maincategories.name as main_category_name', 'secondcategories.id as second_category_id', 'secondcategories.url as second_category_url', 'secondcategories.name as second_category_name', 'thirdcategories.id as third_category_id', 'thirdcategories.url as third_category_url', 'maincategories.name as third_category_name', 'brands.id as brand_id', 'brands.name as brand_name')
    ->where('products.main_category',$maincategory->id)->$q->paginate(6);

这是我来自控制器的方法代码。 它给出错误:未定义的变量:q 如何使用 Laravel 控制器解决此错误? Laravel Controller 中如何加入产品过滤查询?

【问题讨论】:

    标签: mysql laravel laravel-5 eloquent


    【解决方案1】:

    你可以这样做,首先像这样在方法的顶部初始化$q

    $q = Product::query();
    //.... put all your filters code here
    // and then put your last query as below.
    $productdata= $q->leftjoin('maincategories', 'maincategories.id', '=', 'products.main_category')
    ->leftjoin('secondcategories', 'secondcategories.id', '=', 'products.second_category')
    ->leftjoin('thirdcategories', 'thirdcategories.id', '=', 'products.third_category')
    ->leftjoin('brands', 'brands.id', '=', 'products.brand')->select('products.*', 'maincategories.id as main_category_id', 'maincategories.url as main_category_url', 'maincategories.name as main_category_name', 'secondcategories.id as second_category_id', 'secondcategories.url as second_category_url', 'secondcategories.name as second_category_name', 'thirdcategories.id as third_category_id', 'thirdcategories.url as third_category_url', 'maincategories.name as third_category_name', 'brands.id as brand_id', 'brands.name as brand_name')
    ->where('products.main_category',$maincategory->id)->paginate(6);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 2019-01-11
      相关资源
      最近更新 更多