我正在将Fractal与Eloquent(Laravel)结合使用,并且我遇到了具有多对多(belongsToMany)关系的模型的问题 . 我正在使用JsonApiSerializer,我似乎无法找到从包含的资源中删除重复条目的适当位置 .
例如,我在用户和电子邮件之间存在多对多的关系 . 当我从我的API下载电子邮件列表时,我看到“用户”中的重复项(因为同一个用户被附加到多个电子邮件中) .
我添加了以下使用php array_unique
的代码片段,但它似乎稍微破坏了json输出(下图) . 有没有更好的地方挂钩和删除重复?
重复:
return $this->manager->createData($resource)->toArray();
独特:
foreach($this->manager->createData($resource)->toArray() as $key => $resource)
{
$resources[$key] = array_unique($resource, SORT_REGULAR);
}
return $resources;
但是,当使用 array_unique
时,输出更改为:
users: [
{
id: "53e8ea180454040b008b4569",
...
},
{
id: "53e8ea180454040b008b4568",
...
}
]
至
users: {
0: {
id: "53e8ea180454040b008b4569",
...
},
1: {
id: "53e8ea180454040b008b4568",
...
},
}
1 回答
如果问题是您的输出必须是
array []
但是得到object {}
- 请在return
语句中使用array_values()
.在你的代码中:
return $resources;