プロジェクトには、ユーザーとアバターの2つのエンティティがあります。
ユーザーはOneToOneリレーションを持つアバターを所有しています。
アバターは、ファイルオブジェクトとfileNameを持つエンティティです。 Symfony2ドキュメント で説明されているように、@ ORM\HasLifecycleCallbacksを使用して、ファイルを保存または削除します。
コントローラーで、現在のユーザーからアバターエンティティを削除したいのですが($user = $this->get('security.context')->getToken()->getUser()
を使用)、$user->getAvatar()
でアバターにアクセスできません。
var_dump($user->getAvatar());
object(AppBundle\Entity\Avatar)
private 'id' => int 20
public 'file' => null
private 'fileName' => null
しかし、アバターのfileNameにアクセスしようとすると、次のように返されます。
$filename = $user->getAvatar()->getFileName();
var_dump($user->getAvatar());
object(AppBundle\Entity\Avatar)
private 'id' => int 20
public 'file' => null
private 'fileName' => string 'myfile.png'
アバターをユーザーに関連付けるにはどうすればよいですか?
Doctrine docs で説明されているように、フェッチ動作を熱心に指定する必要があります。
/**
* @OneToOne(targetEntity="User", fetch="EAGER")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
YAMLまたはその他の構成例のドキュメントを参照してください。