我的项目中有两个实体:用户和头像。
用户拥有与OneToOne关系的头像。
Avatar是一个具有文件对象和fileName的实体。它使用@ORM \ HasLifecycleCallbacks来保存文件或将其删除,如Symfony2 documentation中所述。
在我的控制器中,我想从当前用户中删除头像实体(我使用$currentUser = $this->get('security.context')->getToken()->getUser()
),但我无法使用$currentUser->getAvatar()
获取头像:
var_dump($currentUser->getAvatar());exit;
输出:
object(Proxies\__CG__\Participso\UserBundle\Entity\Avatar)[355]
public '__initializer__' =>
object(Closure)[348]
public '__cloner__' =>
object(Closure)[349]
public '__isInitialized__' => boolean false
private 'id' (Participso\UserBundle\Entity\Avatar) => int 20
public 'file' => null
private 'fileName' (Participso\UserBundle\Entity\Avatar) => null
但如果我这样做
$whatever = $currentUser->getAvatar()->getFileName();
var_dump($currentUser->getAvatar());exit;
输出:
object(Proxies\__CG__\Participso\UserBundle\Entity\Avatar)[355]
public '__initializer__' =>
object(Closure)[348]
public '__cloner__' =>
object(Closure)[349]
public '__isInitialized__' => boolean false
private 'id' (Participso\UserBundle\Entity\Avatar) => int 20
public 'file' => null
private 'fileName' (Participso\UserBundle\Entity\Avatar) => string 'd4e5eadd3757498a22b14ad1f81869c2baf459d3.png'
这很烦人......有人有线索可以避免这种情况吗?
答案 0 :(得分:22)
如Doctrine docs中所述,您只需要指定提取行为即可。
/**
* @OneToOne(targetEntity="User", fetch="EAGER")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
请参阅YAML或其他配置示例的文档。