如何解决JSON 的 Laravel 连接关系
我在 Laravel 中使用 Eloquent Relationship 将我的数据输出到 JSON。当我使用 Eloquent Relations 时,它们在 JSON 中显示为一个对象,但我只需要带有变量的 JSON 输出,而没有对象或 json,如下所示:
{
"id": 1,"name": "Status changed","history_id": null,"admin_id": 4,"created_at": "2021-05-21T16:10:08.000000Z","updated_at": "2021-04-21T16:10:08.000000Z","type_id": 2,"comment": "Horoshiy Specialist","result_id": 2,"result_comment": "Prowerili anketu i obrazowanie","start_time": null,"end_time": null,},
而不是这个(LARVEL 中一对多 toJSON 关系的结果):
$activity = Activity::find(1)->load('history')->toJSON();
结果:
{
"id": 1,"history": [
{
"id": 1,}
]
},
任何想法如何做到这一点?我可以使用 DB join () 来做到这一点,但是有没有办法使用 Eloquent 做到这一点?此外:
$activity = \App\Models\Activity::find(1)
->join('activity_history','activity_history.id','=','activities.history_id')->select('*')->get()
->toJSON();
因为这不是最好的方法,因为我用的是列名和表名,我得去后面的DB看看
解决方法
您可以通过在获得该结果时展平数组来解决此问题。让我们假设您 $object->history
使用历史关系获得结果,然后简单地执行:
Arr::dot($object->history);
所以你会得到一个像这样的数组:
{
"id": 1,"name": "Status changed","history_id": null,"admin_id": 4,"created_at": "2021-05-21T16:10:08.000000Z","updated_at": "2021-04-21T16:10:08.000000Z","history.id": 1,"history.type_id": 2,"history.comment": "Horoshiy Specialist","history.result_id": 2,"history.result_comment": "Prowerili anketu i obrazowanie","history.start_time": null,"history.end_time": null,}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。