模型搜尋器和資料集
阿新 • • 發佈:2021-12-16
一.模型搜尋器
1. 搜尋器是用於封裝欄位(或搜尋標識)的查詢表示式;
2. 一個搜尋器對應模型的一個特殊方法,該方法為 public;
3. 方法名的命名規範為:searchFieldNameAttr();
4. 舉個例子,我們要封裝一個郵箱字元模糊查詢,然後封裝一個時間限定查詢;
5.FieldName
為資料表字段的駝峰轉換,搜尋器僅在呼叫withSearch
方法的時候觸發;
在 User 模型端,我建立兩個對外的方法,如下:
// 定義搜尋器 public function searchBnameAttr($query,$value){ //建立搜尋規則 $query->where('bname','like',$value.'%'); }
在控制端使用withSearch()
public function show(){ // 使用搜索器過濾顯示,withSearch兩個引數必須為陣列 $user=UserModel::withSearch(['bname'],['bname'=>'王'])->select(); return json($user); }
如果搜尋器需要過濾兩個欄位bname u_time,那需要在模型中建立兩個搜尋器 searchBname() searchU_time(),
控制器在呼叫withSearch(['bname','u_time'],['bname=>'du','u_time'=>['2021-10','2021-11']]);
6.如果你想在搜尋器新增一個可以排序的功能,具體如下:
public function searchEmailAttr($query, $value, $data) { $query->where('email', 'like', $value.'%'); if (isset($data['sort'])) { $query->order($data['sort']); } }