首页 > 解决方案 > 如何在 laravel 5.2 中拆分查询生成器?

问题描述

我有三个变量,如果这些变量不为空或不为空,我只想添加某些 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();

现在我得到以下错误

'Illuminate\Database\Eloquent\Builder 无法转换为字符串'

标签: phplaravellaravel-5

解决方案


尝试像这样使用这部分。在每个条件下分配您的$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();

推荐阅读