给定两个实体Permission
和Group
及其关系实体GroupPermission
,我想从任何Group
对象中获得相关的Permission
。最佳实践:如何从一个实体获得相关实体
这里是我的实体(简化)说明:
----------
Permission
----------
permissionId
name
-----
Group
-----
groupId
name
----------------
GroupPermission
----------------
groupPermissionId
groupId
permissionId
除了我的三个文档类(描述Permission
,Group
和GroupPermission
对象),我有三个仓库类(包含所有数据库相关逻辑)。
理想情况下,我希望能够做到$anyGroup->getPermissions()
,并直接获取所有Permission
对象。
由于实体应该对其存储库(以及其他实体存储库)一无所知,因此我不知道实现此类行为的最佳实践是什么。
编辑:继@KhorneHoly回答我补充一定限制:
我的文档类实现以易于序列化到JSON的JsonSerializable
类。 因此,我有以下方法描述了如何做到这一点:
public function jsonSerialize()
{
return array(
'groupId' => $this->getGroupId(),
'name' => $this->getName(),
);
}
而且我想访问从那里权限,包括他们在JSON。
public function jsonSerialize()
{
return array(
'groupId' => $this->getGroupId(),
'name' => $this->getName(),
'permissions' => $this->getPermissions()
);
}
我知道这种方法,但我有时需要直接在文档类中使用相同的行为。我已经按照编辑我的问题。 –
@fef我看不到您的问题。如果您在控制器内部使用'json_serialize'函数,您只需从repo获得权限并将其添加到数组中。 – KhorneHoly
由于此方法经常使用,因此我不需要手动添加它们。 特别是当我做一些像'返回新的JsonResponse(数组('组'=> $ arrayContainingMultipleGroups))' –