【问题标题】:search multi column and join another query when a condition is true当条件为真时搜索多列并加入另一个查询
【发布时间】:2021-02-07 03:20:29
【问题描述】:

我想在帖子表中搜索搜索查询,我应该在标题和 slug 列中搜索,而且我有一个复选框来仅搜索已发布的帖子。

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

    $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);
        });

【问题讨论】:

    标签: laravel eloquent laravel-6 laravel-8


    【解决方案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);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 2013-12-11
      • 1970-01-01
      相关资源
      最近更新 更多