为了账号安全,请及时绑定邮箱和手机立即绑定

为什么我的第三个条件在搜索中不起作用?

为什么我的第三个条件在搜索中不起作用?

PHP
慕村9548890 2022-08-19 15:58:01
我正在尝试获取搜索结果,并且我有以下代码:public function search(Request $request){     $from = $request->from;    $to = $request->to;    $word = $request->word;      if(empty($word) || $word == null){        $searched = Post::whereBetween('created_at', [$from, $to])->paginate(10);    } elseif(!empty($word) && !empty($from) && !empty($to)){         $searched = Post::where('title', 'LIKE', '%' . $word . '%')        ->orWhere('content', 'LIKE', '%' . $word . '%')        ->orWhere('subtitle', 'LIKE', '%' . $word . '%')        ->whereBetween('created_at', [$from, $to])        ->paginate(10);     } elseif(empty($from) && empty($to) && !empty($word)){        $searched = Post::where('title', 'LIKE', '%' . $word . '%')        ->orWhere('content', 'LIKE', '%' . $word . '%')        ->orWhere('subtitle', 'LIKE', '%' . $word . '%')        ->paginate(10);    }    return view('page.search', compact('searched', 'from', 'to'));}第一个和第二个条件正在起作用,但最后一个条件不起作用。我在这里错过了什么或做错了什么?
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

试试这个

  • 例如,如果找到单词,则使用类似搜索,然后第一个条件为真

  • 如果用户设置了开始日期和截止日期,则第二个条件为 true

  • 如果用户同时填写(单词和日期),则您的两个条件都为真。

  • 如果你没有填写任何值,那么只得到前10(十)个帖子(没有条件匹配)

public function search(Request $request){


    $posts = Post::query();

    $from = $request->from;

    $to = $request->to;

    $word = trim($request->word);


    if($word && !empty($word)){

           $posts->where('title', 'LIKE', '%' . $word . '%')

            ->orWhere('content', 'LIKE', '%' . $word . '%')

            ->orWhere('subtitle', 'LIKE', '%' . $word . '%');

    }


    if(!empty($from) && !empty($to)){

        $posts->whereBetween('created_at', [$from, $to]);

    }


    $searched = $posts->paginate(10);


    return view('page.search', compact('searched', 'from', 'to'));

}


查看完整回答
反对 回复 2022-08-19
  • 1 回答
  • 0 关注
  • 110 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信