首页 文章

Laravel和Fractal:与belongsToMany关系重复

提问于
浏览
2

我正在将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

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

    在你的代码中:

    return $resources;

相关问题