企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
### 将模型数据转成数组 当构建 `JSON API` 时,您可能常常需要把模型和关联对象转换成数组或`JSON`。所以Eloquent里已经包含了这些方法。要把模型和已载入的关联对象转成数组,可以使用 `toArray`方法: ~~~ ~~~ $user = User::with('roles')->first(); return $user->toArray(); ~~~ ~~~ > 注意:也可以把整个的模型集合转换成数组: ~~~ ~~~ return User::all()->toArray(); ~~~ ~~~ ### 将模型转换成 JSON 要把模型转换成 JSON,可以使用 toJson 方法: ~~~ ~~~ return User::find(1)->toJson(); ~~~ ~~~ ### 从路由中返回模型 注意当模型或集合被转换成字符串类型时会自动转换成 JSON 格式,这意味着您可以直接从路由返回 Eloquent 对象! ~~~ ~~~ Route::get('users', function() { return User::all(); }); ~~~ ~~~ ### 转换成数组或 JSON 时隐藏属性 有时您可能想要限制能出现在数组或 JSON 格式的属性数据,比如密码字段。只要在模型里增加 hidden 属性即可 ~~~ ~~~ class User extends Model { protected $hidden = ['password']; } ~~~ ~~~ > 注意: 要隐藏关联数据,要使用关联的方法名称,而不是动态获取的属性名称。 此外,可以使用 visible 属性定义白名单: ~~~ ~~~ protected $visible = ['first_name', 'last_name']; ~~~ ~~~ 有时候您可能想要增加不存在数据库字段的属性数据。这时候只要定义一个获取器即可: ~~~ ~~~ public function getIsAdminAttribute() { return $this->attributes['admin'] == 'yes'; } ~~~ ~~~ 定义好获取器之后,再把对应的属性名称加到模型里的 appends 属性: ~~~ ~~~ protected $appends = ['is_admin']; ~~~ ~~~ 把属性加到 `appends` 数组之后,在模型数据转换成数组或 `JSON`格式时就会有对应的值。在 `appends`数组中定义的值同样遵循模型中 `visible`和 `hidden`的设定。