> 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断点调试