> ## 对象数据支持数组方式访问和赋值
```
$user = User::find(1);
echo $user->name ; // 有效
echo $user['name'] // 同样有效
$user->name = 'thinkphp'; // 有效
$user['name'] = 'thinkphp'; // 同样有效
$user->save();
```
> ## 对象格式转换为数组格式
```
$user = User::find(1);
// 转换为数组
dump($user->toArray());
// 隐藏指定属性
dump($user->hidden(['create_time','update_time'])->toArray());
// 追加获取器中生成的表中不存在的字段到属性列表
dump($user->append(['status_text'])->toArray());
// 允许指定属性输出
dump($user->visible(['id','name','email'])->toArray());
// 如果结果集为数组非对象,则不能调用toArray方法,这时候需要把数组转为对象再调用
$list = User::all();
if($list) {
$list = collection($list)->toArray();
}
// 还可以直接在模型类中定义数据集返回类型,这样就都返回对象了,可以直接调用toArray
protected $resultSetType = 'collection';
// 将关联模型的属性追加到结果集
$user = User::find(1);
// profile为定义的关联方法名,email和nickname为模型Profile的属性
dump($user->appendRelationAttr('profile',['email','nickname'])->toArray());
// 如果是移除用:removeRelation(5.0.10+),同上
```
> ## visible、hidden和append方法不仅支持数组,还支持数据集对象,同样支持关联模型
```
$user = User::get(1,'profile');
// 隐藏profile关联属性的email属性
dump($user->hidden(['profile'=>['email']])->toArray());
// 或者使用
dump($user->hidden(['profile.email'])->toArray());
```