1. 程式人生 > 其它 >模型搜尋器和資料集

模型搜尋器和資料集

一.模型搜尋器

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']);
}
}

7.搜尋器的第三個引數$data,可以得到 withSearch()方法第二引數的值;

8. 欄位也可以設定別名:'create_time'=>'ctime'