搜索多列并在条件为真时加入另一个查询

search multi column and join another query when a condition is true

我想在 posts table 中搜索搜索查询,我应该在 title 和 slug 列中搜索,我还有一个复选框只搜索已发布的 posts .

在我的代码中,我的查询总是忽略 is_publish 查询。当“搜索已发布的 post”复选框被选中时,我如何仅搜索已发布的 post?

    $query = Post::when($request->target, function ($q) use ($request) {
            $q->where('title','LIKE', "%$request->target%")->orWhere('slug', 'like', "%$request->target%");
        })->when($request->publish, function ($query) use ($request) {
            $query->where('is_publish', 1);
        });

你可以这样写:

$query = Post::when($request->target, function ($q) use ($request) {
    $q->whereRaw("(title LIKE '%$request->target%' or slug LIKE '%$request->target%')")
})->when($request->publish, function ($query) use ($request) {
    $query->where('is_publish', 1);
});