我正在将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",
...
},
}
答案 0 :(得分:0)
如果问题是您的输出必须是array []
,但得到object {}
- 请在array_values()
声明中使用return
。
在您的代码中:
return $resources;