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

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

Laravel 雄辯的搜索/過濾

Laravel 雄辯的搜索/過濾

PHP
皈依舞 2022-07-16 17:21:10
我正在為我的電影資料實現過濾/搜索功能,我來自 symfony 背景,只是在學習 laravel 的過程中,我會將這個查詢放在一個新的存儲庫中,例如FilmRepository保持查詢獨立并且控制器不那么混亂我的第一個選擇是在 repo 中創建一個連接查詢,它將所有這些表連接在一起,但是如果我希望它過濾/搜索,即使沒有選擇特定的下拉選項怎么辦?我有點迷失如何解決這個功能這是我創建的需要更多工作的粗略回購功能存儲庫 public function searchFilms()    {        $films= Film::from('films')            ->join('categories', 'films.id', '=', 'categories.film_id')            ->join('locations', 'id', '=', 'location.id')            ->join('age_rating', 'id', 'age_rating.id')            ->orderBy('updated_at', 'desc');    }我知道我需要這些過濾器選項作為查詢參數我如何在 laravel 中做到這一點?我可以就如何解決此解決方案獲得一些幫助嗎?謝謝
查看完整描述

1 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

在 laravel 控制器中,action 可以接收一個 Request 對象作為參數,該對象可用于從前端獲取過濾器。


public function searchFilms(Request $request)

    $data = $request->all();

    $user = Auth::user();


    return FilmResource::collection($this->repository->searchFilms($data));

}

Request 類有不止一種獲取數據的方法,你可以閱讀這篇文章來了解它們,但是,->all()(更多關于它的信息是其中一種方法。


然后將數據傳遞給您的 searchFilms 函數并應用過濾器


 public function searchFilms($filters)

 {

        $films= Film::from('films')

            ->join('categories', 'films.id', '=', $filters['film_id'])

            ->join('locations', 'id', '=', $filters['location_id'])

            ->join('age_rating', 'id', $filters['age_rating_id'])

            ->orderBy('updated_at', 'desc');

 }

類似的東西會起作用,我不知道你輸入的名稱,但你可以從中得到一個想法。


已編輯


因此,為了在評論中澄清您的問題。


$request->all() 將返回您發布的數據的數組,其中輸入的屬性名稱將是每個值的鍵。例如,假設我有以下 html 表單:


<form>

 <input name="name" type="text" value="john doe" />

 <input name="age" type="text" value="39" />

</form>

$request->all()將是這樣的數組['title' => 'john doe', 'age' => '39'];


查看完整回答
反對 回復 2022-07-16
  • 1 回答
  • 0 關注
  • 108 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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