我猜
orWhere
把你的问题搞砸了。
试着这样做:
public function posts(Request $request) {
$query = $request->input('query');
return Post::select (
"posts.title",
"posts.description",
"posts.body",
"categories.name as category_name",
"post_statuses.status as post_status",
)
->leftJoin("categories", "posts.category_id", "=", "categories.id")
->leftJoin("post_statuses", "posts.status", "=", "post_statuses.id")
// filter by status
->where('post_statuses.status', '=', 'active')->where(function ($q) use($query){
$q->orWhere('title', 'like', '%' . $query . '%')
->orWhere('description', 'like', '%' . $query . '%')
->orWhere('body', 'like', '%' . $query . '%')
->orWhere('categories.name', 'like', '%' . $query . '%')
->orWhere('post_statuses.status', 'like', '%' . $query . '%');
})
->orderBy('posts.id','DESC')
->paginate(10);
}