たとえば、メイン(親)エンティティ(たとえばUser
)と従属エンティティ(Post
)の2つのエンティティがあります。 JMSシリアライザを使用してUser
エンティティをシリアル化したいのですが、最初の投稿日の追加情報があります。 DBに格納された投稿日はtimestamp intですが、intを何らかのフォーマットで変換する私のヘルパー(ただのサービス)とシリアル化したいと思います。複合体シリアライゼーション
エンティティクラスでメソッドを使用してvirtual_property
を作成しようとしましたが、エンティティクラスにヘルパーを挿入できませんでした。私のためにそれを解決する唯一の方法は、コントローラに自分でシリアライズすることです:
public function someAction()
{
$serializedUser = $this->serializeEntity($user);
}
public function serializeEntity(User $user)
{
// JMS serialization
$user = $this->get('jms_serializer')->serialize($user, 'array');
if ($user->getPosts()->count()) {
$post = $user->getPosts()->first();
$user['first_post_date'] = $this->get('my_helper_service')->dateFormat($post->getDate());
}
return $user;
}
NB:この例では、私は、より複雑な方法だけでなく、日付フォーマッタを持っている現実の世界では、合成です。しかし、主なアイデアは同じです。
私はこれを行うより良い方法があると感じています。
は、私がイベントを考えますが、このイベントの火災は、すべてシリアライズ上だろうか?私が移入したいいくつかのエンティティがある場合、コードにはSomeEntityの多くの 'if($ event-> getObject()インスタンスがあります){$ this-> someEntityFormat($ event);} } ' – Aliance