亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Laravel 多重過濾器與搜索

Laravel 多重過濾器與搜索

PHP
慕沐林林 2023-06-30 16:26:49
我想搜索服務提供商和產品,并按位置和服務或按位置和副產品進行過濾。我正在使用下面的代碼` $results = new ClientProfile;    if (request()->has('service-provider')) {        $results = $results->where('jobsc_id', request('service-provider'));    } elseif(request()->has('product')) {        $results = $results->where('product_id', request('product'));    } elseif(request()->has('city')){        $results = $results->where('divsec_id', request('city'));    } else {        $results = ClientProfile::searched();    }          $results = $results->where('profile_state', 'active')->paginate(10)->appends([        'service-provider' => request('service-provider'),        'product' => request('product'),        'city' => request('city'),    ]);                    return view('results')->with('results', $results);`雖然它顯示的 URL 為domain.com/results?product=2&city=78,但它顯示了所有沒有按城市過濾的產品
查看完整描述

2 回答

?
德瑪西亞99

TA貢獻1770條經驗 獲得超3個贊

因此,當你找到一個時你使用if elseif它,第二個也不會出現。


改用when_if else


$results = new ClientProfile::when(request()->has('service-provider'), function($q){

    $q->where('jobsc_id', request('service-provider'));

})

->when(request()->has('product'), function($q){

    $q->where('product_id', request('product'));

})

->when(request()->has('city'), function($q){

    $q->where('divsec_id', request('city'));

})

->when(count($request->all()) === 0, function($q){

    $q->searched();

})

->where('profile_state', 'active')->paginate(10)->appends([

    'service-provider' => request('service-provider'),

    'product' => request('product'),

    'city' => request('city'),

]);


        

return view('results')->with('results', $results);`


查看完整回答
反對 回復 2023-06-30
?
紅顏莎娜

TA貢獻1842條經驗 獲得超13個贊

這段代碼對我有用


$results = ClientProfile::when(request()->has('service-provider'), function($q){

            $q->where('jobsc_id', request('service-provider'));

        })->when(request()->has('product'), function($q){

            $q->where('product_id', request('product'));

        })->when(request()->has('city'), function($q){

            $q->where('divsec_id', request('city'));

        })->when(count(request()->all()) === 0, function($q){

            $q->searched();

        })->where('profile_state', 'active')->paginate(10)->appends([

            'service-provider' => request('service-provider'),

            'product' => request('product'),

            'city' => request('city'),

        ]);


查看完整回答
反對 回復 2023-06-30
  • 2 回答
  • 0 關注
  • 140 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號