php - 如何在 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 无法转换为字符串'
解决方案
尝试像这样使用这部分。在每个条件下分配您的$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();
推荐阅读
- crud - 如何使用 TADOCommand 执行 SQL 更新?
- postgresql - 检查请求是否返回到数据库
- javascript - TypeError: axiosCookieJarSupport 不是函数,适用于 Node.JS 但不适用于 .vue 页面?
- python - Python sqlite3:透视列并根据透视数据创建视图
- javascript - VanillaJS 每个测试模拟
- jquery - 使用 laravel ajax 切换自定义不会移动和更改
- r - 如何获得我的二项式回归是否与 R 中的空模型显着不同的 p 值?
- python - 配置读取文件名 python
- objective-c - 如何根据含义在 2D 地图上组织文章?
- linux - I/O 绑定与 CPU 绑定取决于内核?