搜索多列并在条件为真时加入另一个查询
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);
});
我想在 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);
});