简体   繁体   English

如何在 laravel 5.2 中拆分查询生成器?

[英]How to split query builder in laravel 5.2?

I have three variables and I only want to add certain where clause if those variables are not null or blank.我有三个变量,如果这些变量不是 null 或空白,我只想添加某些 where 子句。

$brand = $request->brand == 0 ? "" : $request->brand ;
$category = $request->category == 0 ? "" : $request->category ;
$subcategory = $request->subcategory == 0 ? "" : $request->subcategory;

$items = Item::select('items.*','brands.brand_name','category.category_name','subcategory.subcategory_name')
            ->leftJoin('brands','items.brand_id','=','brands.id')
            ->leftJoin('category','items.category_id','=','category.id')
            ->leftJoin('subcategory','items.subcategory_id','=','subcategory.id');

if($brand != ""){
    $items->where('items.brand_id',$brand);
}
if($category != ""){
    $items->where('items.category_id',$category);
}
if($subcategory != ""){
    $items->where('items.subcategory_id',$subcategory);
}
$items->get();

Now I am getting below error现在我得到以下错误

'Illuminate\Database\Eloquent\Builder could not be converted to string' 'Illuminate\Database\Eloquent\Builder 无法转换为字符串'

$items is an Eloquent Builder instance so take output in other variable: $items是一个 Eloquent Builder 实例,所以在其他变量中使用 output :

$items = Item::select('items.*','brands.brand_name','category.category_name','subcategory.subcategory_name')
                    ->leftJoin('brands','items.brand_id','=','brands.id')
                    ->leftJoin('category','items.category_id','=','category.id')
                    ->leftJoin('subcategory','items.subcategory_id','=','subcategory.id');

if($brand != ""){
    $items->where('items.brand_id',$brand);
}
if($category != ""){
    $items->where('items.category_id',$category);
}
if($subcategory != ""){
    $items->where('items.subcategory_id',$subcategory);
}

$data = $items->get();

Try to use this part as like this.尝试像这样使用这部分。 assign your $items variable every condition.为每个条件分配您的$items变量。

$items = Item::select('items.*','brands.brand_name','category.category_name','subcategory.subcategory_name')
            ->leftJoin('brands','items.brand_id','=','brands.id')
            ->leftJoin('category','items.category_id','=','category.id')
            ->leftJoin('subcategory','items.subcategory_id','=','subcategory.id');

if($brand != ""){
    $items = $items->where('items.brand_id',$brand);
}
if($category != ""){
    $items = $items->where('items.category_id',$category);
}
if($subcategory != ""){
    $items = $items->where('items.subcategory_id',$subcategory);
}
$items = $items->get();
$Items = DB::table('Item')
            ->join('brands','items.brand_id','=','brands.id')
            ->Join('category','items.category_id','=','category.id')
            ->Join('subcategory','items.subcategory_id','=','subcategory.id');
             ->select('items.*','brands.brand_name','category.category_name',
               'subcategory.subcategory_name')
            ->get();

      dd($Items);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM