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

如何为 Laravel 搜索过滤器功能创建查询语句?

如何为 Laravel 搜索过滤器功能创建查询语句?

PHP
元芳怎么了 2021-07-08 17:49:07
如何为 Laravel 搜索过滤器功能创建查询语句?我想将 Laravel 搜索查询合二为一。现在这段代码有问题。它不是多条件叠加。我想将此查询统一为一个并获得满足所有条件的结果。我应该怎么办?//펜팔 메인 페이지public function index (Request $request){    //base Object    $penpals =  $this->penpalModel->getUsers();    //name search    if (!empty($request->name)) {        $users = $this->userModel->where('name', 'like', '%' . $request->name . '%')->get();        if (!empty($users)) {            $penpals->whereIn('user_id', $users);        }            }    //gender search    if (!empty($request->gender) && $request->gender !== 'all') {         $penpals->leftJoin('users', 'penpals.user_id', '=', 'users.id')        ->select('penpals.*', 'users.gender')        ->where('users.gender', $request->gender);     }    //country search    if (!empty($request->country) && $request->country !== 'all') {         $penpals->leftJoin('users', 'penpals.user_id', '=', 'users.id')        ->select('penpals.*', 'users.country')        ->where(['users.country', $request->country]);     }     // goal name search     if (!empty($request->goal) && $request->goal !== 'all') {        $penpals = $this->penpalModel->where('goal_id',$request->goal)->latest();     }    //age search    if($request->ageMin || $request->ageMax){        $ageMin = floor($request->ageMin);        $ageMax = floor($request->ageMax);        $penpals = $this->penpalModel->leftJoin('users', 'penpals.user_id', '=', 'users.id')        ->select('penpals.*', 'users.age')        ->whereBetween('users.age', [$ageMin, $ageMax]);    }    $penpalsData = $penpals->orderBy('penpals.created_at','desc')->paginate(12);    $penpalsCount = count($penpalsData);    return view('penpal.index')->with([        'penpals'       => $penpalsData,        'penpalsCount'  => $penpalsCount        ]);}
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 155 浏览

添加回答

举报

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