数组访问
版本 | 新增功能 |
---|---|
5.0.10 |
增加removerelation 方法去除所有的关联属性 |
5.0.5 |
hidden 、visible 和append 方法支持关联属性 |
5.0.4 |
增加appendrelationattr 方法追加关联模型的属性 |
模型对象支持数组方式访问,例如:
$user = user::find(1);
echo $user->name ; // 有效
echo $user['name'] // 同样有效
$user->name = 'thinkphp'; // 有效
$user['name'] = 'thinkphp'; // 同样有效
$user->save();
转换为数组
可以使用toarray
方法将当前的模型实例输出为数组,例如:
$user = user::find(1);
dump($user->toarray());
支持设置不输出的字段属性:
$user = user::find(1);
dump($user->hidden(['create_time','update_time'])->toarray());
数组输出的字段值会经过获取器的处理,也可以支持追加其它获取器定义(不在数据表字段列表中)的字段,例如:
$user = user::find(1);
dump($user->append(['status_text'])->toarray());
支持设置允许输出的属性,例如:
$user = user::find(1);
dump($user->visible(['id','name','email'])->toarray());
如果是数据集查询的话有两种情况,由于默认的数据集返回结果的类型是一个数组,因此无法调用toarray
方法,必须先转成数据集对象然后再使用toarray
方法,系统提供了一个collection
助手函数实现数据集对象的转换,代码如下:
$list = user::all();
if($list) {
$list = collection($list)->toarray();
}
如果设置了模型的数据集返回类型的话,则可以简化使用
model;
class user extends model
{
protected $resultsettype = 'collection';
}
然后就可以直接使用
$list = user::all();
$list = $list->toarray();
追加关联模型的属性(v5.0.4
)
v5.0.4
版本开始,支持追加一对一关联模型的属性到当前模型,例如:
$user = user::find(1);
dump($user->appendrelationattr('profile',['email','nickname'])->toarray());
profile
是关联定义方法名,email
和nickname
是profile
模型的属性。
支持关联属性(v5.0.5
)
模型的visible
、hidden
和append
方法支持关联属性操作,例如:
$user = user::get(1,'profile');
// 隐藏profile关联属性的email属性
dump($user->hidden(['profile'=>['email']])->toarray());
// 或者使用
dump($user->hidden(['profile.email'])->toarray());
hidden
、visible
和append
方法同样支持数据集对象。