Laravel Eloquent 模型 JSON 输出格式
Posted
技术标签:
【中文标题】Laravel Eloquent 模型 JSON 输出格式【英文标题】:Laravel Eloquent model JSON output format 【发布时间】:2021-02-04 06:52:16 【问题描述】:我的问题是关于向数据库发送查询时收到的 JSON 格式。 我想要的输出:
["errors":["something":"something"],"created_at":"2020-10-20 10:10:10","name":"something","id":99]
我明白了:
["id":99,"name":"something","device_results":["devices_id":99,"created_at":"2020-10-20 10:10:10","errors":["something":"something"]]]
我得到的:
public function errors()
$errors = DB::table('devices')
->join('device_results', 'devices.id', '=', 'device_results.devices_id')
->select('errors', 'created_at', 'name', 'device_results.id')
->orderBy('created_at', 'desc')
->whereJsonLength('errors', '>', 0)
->get();
return $errors;
我希望使用我的模型获得相同的结果,因为如果我这样做:
public function errors()
$devices = Devices::with(['device_results' => function($query)
$query->select('device_results.devices_id','created_at','errors')
->whereJsonLength('errors', '>', 0)
->orderBy('created_at', 'desc')
->get();
])->get();
return $devices;
它总是采用这种格式,还是我可以使用模型并获得与 DB 类相同的格式?我在前端使用 Vue,希望避免嵌套。
谢谢
【问题讨论】:
如果你使用带关系的模型,结果总是嵌套的。每个关系都将作为单独的对象或集合加载。 【参考方案1】:您是否尝试过创建Resource
?
文档:https://laravel.com/docs/8.x/eloquent-resources
【讨论】:
谢谢,我会看的!我对 laravel 还很陌生,还没有完整的概述。以上是关于Laravel Eloquent 模型 JSON 输出格式的主要内容,如果未能解决你的问题,请参考以下文章
修剪 Laravel 中所有 Eloquent 模型的所有字符串属性
Laravel Eloquent,返回带有“belongsTo”对象的 JSON?
Laravel 5.1 文档攻略 —— Eloquent:模型对象序列化
Laravel 5 Eloquent在多个级别上向JSON添加关系