から関連するエンティティを取得する方法を、私は、任意のGroup
オブジェクトから取得する関連Permission
たいと思います。ここでベストプラクティス:1つのエンティティ2つのエンティティ<code>Permission</code>と<code>Group</code>とその関連エンティティ<code>GroupPermission</code>考える
が私のエンティティの(簡体字)の説明である:(Permission
を記述し、Group
とGroupPermission
オブジェクト)私の3つの文書クラスに加えて
----------
Permission
----------
permissionId
name
-----
Group
-----
groupId
name
----------------
GroupPermission
----------------
groupPermissionId
groupId
permissionId
、私は、関連するすべてのデータベースを含む3つのリポジトリのクラスを(持っています論理)。
理想的には、私は$anyGroup->getPermissions()
を行うことができるようにしたいと思い、直接すべてのPermission
オブジェクトを取得します。
エンティティはそのリポジトリ(および他のエンティティリポジトリ)を知らないため、このような動作を実装するのがベストプラクティスであるかどうかはわかりません。
EDIT: @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'関数を使用している場合は、リポジトリからパーミッションを取得して配列に追加するだけです。 – KhorneHoly
このメソッドは非常に頻繁に使用されるので、手動で追加する必要はありません。 特に、 'return new JsonResponse(array( 'groups' => $ arrayContainingMultipleGroups))のようなものを実行すると、 –