【发布时间】:2015-01-16 05:08:04
【问题描述】:
我正在将 Fractal 与 Eloquent (Laravel) 结合使用,并且遇到了具有多对多 (belongsToMany) 关系的模型的问题。我正在使用 JsonApiSerializer,但似乎找不到从包含的资源中删除重复条目的合适位置。
例如,我在用户和电子邮件之间有一个多对多的关系。当我从我的 API 中拉下我的电子邮件列表时,我看到“用户”中有重复项(因为同一用户附加到多个电子邮件)。
我添加了以下使用 php array_unique 的 sn-p,但它似乎有点混淆了 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",
...
},
}
【问题讨论】:
-
那么在你得到的结果中,用户嵌套在电子邮件资源中?
-
应该提到“用户”资源与“电子邮件”资源一起加载。