> yii\\base\\Model::fields() 默認返回模型的所有屬性作為字段, yii\\db\\ActiveRecord::fields() 只返回和數據表關聯的屬性作為字段。 可覆蓋 fields() 方法來增加、刪除、重命名、重定義字段,fields() 的返回值應為數組,數組的鍵為字段名 數組的值為對應的字段定義,可為屬性名或返回對應的字段值的匿名函數,特殊情況下,如果字段名和屬性名相同, 可省略數組的鍵,例如
~~~
// 明確列出每個字段,適用于你希望數據表或模型屬性修改時不導致你的字段修改(保持后端API兼容性)
public function fields()
{
return [
// 字段名和屬性名相同
'id',
// 字段名為"email", 對應的屬性名為"email_address"
'email' => 'email_address',
// 字段名為"name", 值由一個PHP回調函數定義
'name' => function ($model) {
return $model->first_name . ' ' . $model->last_name;
},
];
}
// 過濾掉一些字段,適用于你希望繼承父類實現同時你想屏蔽掉一些敏感字段
public function fields()
{
$fields = parent::fields();
// 刪除一些包含敏感信息的字段
unset($fields['auth_key'], $fields['password_hash'], $fields['password_reset_token']);
return $fields;
}
// 如果只想修改某一個字段
public function fields()
{
$fields = parent::fields();
$fields['name'] = function ($model) {
return $model->name . ' a' . $model->name;
};
return $fields;
}
~~~
可以用toArray看下
~~~
$res = Yii::$app->request->post();
$obj = new EntryForm();
$obj->attributes = $res;
var_dump($obj->toArray());
~~~
不顯示數據表中的 password 和 role 字段信息:
~~~
public function fields(){
$fields = parent::fields();
unset($fields['password'],$fields['role']);
return $fields;
}
~~~
顯示除了fields()方法默認限制的字段外,其他的字段信息:
~~~
public function fields(){
$fields = parent::fields();
unset($fields['password'],$fields['role']);
return $fields;
}
public function extraFields(){
return ['role'];
}
~~~
顯示user類的所有默認字段(fields限制的部分):
~~~
http://demo.com/V1/user
~~~
顯示fields中允許顯示的部分字段信息:
~~~
http://demo.com/V1/user?fields=username,role
~~~
顯示除fields限制外,extraFields中允許顯示的信息:
~~~
http://demo.com/V1/user?fields=username&expand=role
http://demo.com/V1/user?expand=role
~~~
- 目錄
- 配置
- 簡介
- 別名
- gii
- 配置項
- 模型
- 簡介
- 增刪改查
- AR和model
- 模型事件
- 場景
- query查詢
- 增刪改
- AR查詢器
- 模型關系定義
- AR模型連表查詢
- fields
- where拼接
- 模塊
- 創建模塊
- 控制器
- 表單
- 跳轉
- 響應
- 驗證器
- Action
- 組件
- url
- 分頁
- 驗證碼
- 緩存
- 文件上傳
- 預啟動組件
- 事件
- 自定義組件
- redis
- 日志
- 行為
- cookie和session
- 基礎知識
- 創建一個類
- 配置一個類
- object基類
- component組件類特性
- phpstorm無法更改php等級
- url地址美化
- 過濾器
- 請求處理
- 請求組件
- 響應組件
- header
- 用戶登錄
- 實現IdentityInterface接口
- 登錄
- 自動檢測登錄
- 獲取用戶信息
- 訪問行為追蹤
- phpstorm+postman斷點調試