Laravel where 子句在多个 orWhere 子句之后没有返回数据?
Posted
技术标签:
【中文标题】Laravel where 子句在多个 orWhere 子句之后没有返回数据?【英文标题】:Laravel where clause is not returning data after multiple orWhere clauses? 【发布时间】:2020-05-08 12:19:06 【问题描述】:我正在使用 laravel 6.10 版本,因为我正在实现搜索,
我有 3 张桌子
1) course_category
2) course_sub_category
3) 课程 [course_id_category(外键),course_sub_category_id(外键)]
下面是我的代码
$course = $request->searchItem;
if ($course=="")
$Courses = DB::table('course')
->join('course_category', 'course.course_category_id', '=', 'course_category.id')
->select('course.*','course_category.title as category_title','course_category.thumb as category_thumb')
->orderBy('course.title','asc')
->paginate(15);
else
$Courses = DB::table('course')
->join('course_category', 'course.course_category_id', '=', 'course_category.id')
->join('course_sub_category', 'course.course_sub_category_id', '=', 'course_sub_category.id')
->select('course.*','course_category.title as category_title','course_category.thumb as category_thumb')
->where('course.title', 'LIKE', '%'.$course.'%')
->orWhere('course_category.title', 'LIKE', '%'.$course.'%')
->orWhere('course_sub_category.title', 'LIKE', '%'.$course.'%')
->get();
当我返回值时,我正在获取 0 个数组,但是当我从现有的查询中删除一个或位置时,我的查询正在工作并且它的返回值我们所有的值都匹配
表示当我在 laravel 中使用多个 orWhere 时,我的 where 不起作用,请分享解决方案。
【问题讨论】:
【参考方案1】:->orWhere
不像典型的 SQL 那样工作。你应该这样使用它:
$Courses = DB::table('course')
->join('course_category', 'course.course_category_id', '=', 'course_category.id')
->join('course_sub_category', 'course.course_sub_category_id', '=', 'course_sub_category.id')
->select('course.*','course_category.title as category_title','course_category.thumb as category_thumb')
->where(function($query) use ($course)
$query->where('course.title', 'LIKE', '%'.$course.'%')
$query->orWhere('course_category.title', 'LIKE', '%'.$course.'%')
$query->orWhere('course_sub_category.title', 'LIKE', '%'.$course.'%')
)
->get();
【讨论】:
以上是关于Laravel where 子句在多个 orWhere 子句之后没有返回数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Laravel Eloquent 创建多个 Where 子句查询?
如何使用 Laravel Eloquent 创建多个 Where 子句查询?
如何在 switch 语句中使用 laravel 模型运行多个 Where 子句