当数据库查询用到多个or and情况下,laravel的查询语句应为如下写法,举例如下:
$articles = DB::table('articles')
->where(function($query) use($articlecolumn){ //此处重点敲黑板,此处function内如果有使用到的变量,务必用use(变量名)将变量传递至函数体内,否则变量不生效
$query->where('cateid',$articlecolumn)
->orWhere('parentid',$articlecolumn); //尽量这样写,更加安全有保障
})
->join('category','articles.cateid','=','category.id')
->select('articles.*','category.name')
->where('title','like','%'.$_POST['searchname'].'%')
->whereBetween('articles.updated_at', [$stime, $etime])
->get()->toArray();
虽然并列写法也能完成搜索,但是最保险的方法是如上方法写,代码清晰,逻辑关系思路准确。