模型搜索器和數據集

一.模型搜索器

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'

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章