Laravel Eloquent 序列化
2022-04-21
在构建 JSON API 的时候,我们需要通过使用 Eloquent 所提供的一些简便方法来进行实现。需要注意的是我们可以通过设置返回的 header来进行返回 具有人类可读 的输出。
在官方文档中我们可以看到,我们可以序列化为数组或者字符串形式,但实际上,并不是这样 直接返回 return $data 即可返回出 json。因此官方文档所提供的 toJson \ toArray都输出的是Json格式内容。
且返回的数据中文均不是人类具有可读性的 \x000 格式,即 Unicode16 格式,无论你在返回中添加 JSON_UNESCAPED_UNICODE 都无济于事。
序列化
1 | public function index() |
因此他返回的是一个 具有人类可读 的 JSON 类型文本,如:
1 | [ |
黑名单与白名单
黑名单
在官方的文档中,黑名单被称之为更具直观的 “ 隐藏输出 ”,即从字面意思上理解不输出当前属性的值,我们可以在需要输出的 Eloquent ORM 模型 中保护属性中添加一个 $hidden 属性即可。
1 |
|
因此相应的 json 对象也不会进行输出,如原先的 ['titles','datetimes','names'] 都不会在下述的返回响应中不会输出。
1 | [ |
白名单
白名单在官方文档中也被称之为 “白名单”,因此在本文中我们可以使用一种更为直观的方法来以 “ 需要输出的对象 ” 来更加直观的理解。白名单的输出也非常简单,和上述步骤一样在 Eloquent ORM 模型中添加一个$visible:
1 | protected $visible = ['titles','datetimes','names']; |
因此输出的也是只有相应的 json 对象:
1 | [ |
