Laravel + MongoDB 雄辩的关系不起作用

时间:2021-06-02 09:37:23

标签: laravel mongodb eloquent laravel-8 jenssegers-mongodb

我是 MongoDB 的新手,如果我的方法不正确,请原谅我。我正在构建一个应用程序,在其中创建了简单的角色和权限管理。权限和角色有单独的集合。一个角色可以有多个权限,这些权限可以属于多个角色。典型的多对多关系。 我已在每个角色集合中嵌入权限,如下所示。

角色集合

db.roles.find().pretty()
{
    "_id" : ObjectId("60b6e6dca3b92759976e3037"),
    "role" : "Role 1",
    "permissions" : [
        "60b6e023a3b92759976e3033",
        "60b6e055550b3f41692caa2b",
        "60b6e07b550b3f41692caa2c"
    ],
    "updated_at" : ISODate("2021-06-02T02:03:08.282Z"),
    "created_at" : ISODate("2021-06-02T02:03:08.282Z")
}

相同角色的权限

> db.permissions.find({"_id":{"$in":[ObjectId("60b6e023a3b92759976e3033"), ObjectId("60b6e055550b3f41692caa2b"), ObjectId("60b6e07b550b3f41692caa2c")]}}).pretty()
{
    "_id" : ObjectId("60b6e023a3b92759976e3033"),
    "permission" : "product_listing",
    "label" : "Product Listing",
    "level" : 1,
    "parent" : null,
    "created_at" : ISODate("2021-06-02T01:45:22.287Z"),
    "updated_at" : ISODate("2021-06-02T01:45:22.287Z")
}
{
    "_id" : ObjectId("60b6e055550b3f41692caa2b"),
    "permission" : "stock",
    "label" : "Stock",
    "level" : 2,
    "parent" : ObjectId("60b6e023a3b92759976e3033"),
    "created_at" : ISODate("2021-06-02T01:45:22.287Z"),
    "updated_at" : ISODate("2021-06-02T01:45:22.287Z")
}
{
    "_id" : ObjectId("60b6e07b550b3f41692caa2c"),
    "permission" : "previously_bought_icon",
    "label" : "Previously bought icon",
    "level" : 2,
    "parent" : ObjectId("60b6e023a3b92759976e3033"),
    "created_at" : ISODate("2021-06-02T01:45:22.287Z"),
    "updated_at" : ISODate("2021-06-02T01:45:22.287Z")
}

现在我想要像下面这样的东西

$role->permissions() 应该输出所有permsion,详细信息如上所示。

我尝试了belongsToMany、embedMany关系,但没有用。似乎我使用了错误的方法,或者我应该将更多字段传递给 elowuent 关系。请帮忙。提前致谢。

0 个答案:

没有答案