如何解决Laravel 与 json 作为字符串的雄辩关系只有一个属性
当我序列化具有关系(例如 ModelA
)的模型(例如 ModelB
)时,它看起来像这样:
[{
"id": 1,"name": "model a1 name","modelB": {
"id": 1,"name": "model b1 name"
}
},{
"id": 2,"name": "model a2 name","modelB": {
"id": 3,"name": "model b3 name"
}
},{
"id": 3,"name": "model a3 name","modelB": {
"id": 2,"name": "model b2 name"
}
}]
相反,我想压缩关系,因为只有一个有用的信息是这样的:
[{
"id": 1,"modelB": "model b1 name"
},{
"id: 2","modelB": "model b3 name"
},"modelB": "model b2 name"
}]
然而,这种行为应该只在它被序列化为关系时才会发生,如果它是顶级模型则不会发生。是否可以在关系内部配置它而不是父模型中的访问器或之后修改结果集合?
解决方法
在您的模型 1 中覆盖名为 toArray 的函数并添加自定义列,如下所示:
public function toArray()
{
$array = parent::toArray();
$array['modelB'] = $this->modelB()->first()->name;
return $array;
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。