Laravel和Fractal:与belongsToMany关系重复

时间:2014-11-18 21:04:20

标签: php laravel

我正在将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 个答案:

答案 0 :(得分:0)

如果问题是您的输出必须是array [],但得到object {} - 请在array_values()声明中使用return

在您的代码中:

return $resources;