无法使用户的头像实体在Symfony2中将其删除

狮子座

我有一个用户实体和一个具有一对一关系的头像实体:

//MyBundle/Entity/User.php

/**
 * @ORM\OneToOne(targetEntity="Participso\UserBundle\Entity\Avatar", cascade={"remove", "persist"})
 */
protected $avatar;

如果用户已经有了头像,我想使用以下命令删除上一个头像:

//MyBundle/Controller/UserController.php

if ($avatarForm->isValid()) {
    $em = $this->getDoctrine()->getManager();

    if($currentUser->getAvatar()){
        $em->remove($currentUser->getAvatar());
    }

    $currentUser->setAvatar($avatar);
    $em->persist($currentUser); //"cascade=persist" from User
    $em->flush();
}

和这个:

//MyBundle/Entity/Avatar.php

/**
 * @ORM\PostRemove()
 */
public function removeUpload()
{
    $file = __DIR__.'/../../../../web/uploads/avatar/' . $this->fileName;
    unlink($file);
}

但是当我这样做时var_dump($currentUser->getAvatar()),即使文件名存在于数据库中,我也会得到一个空的FileName:

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

当我这样做的时候var_dump($currentUser->getAvatar()->getFileName),我得到了文件名!(而不是以前看到的NULL)...

有人有主意吗?

狮子座

多谢您的回覆!

实际上,这是由于学说的“懒惰加载”:

如果我做 :

var_dump($currentUser->getAvatar());exit;

输出 :

object(Proxies\__CG__\Participso\UserBundle\Entity\Avatar)[355]
    private 'id' (Participso\UserBundle\Entity\Avatar) => int 20
    private 'fileName' (Participso\UserBundle\Entity\Avatar) => null

但是如果我这样做

$whatever = $currentUser->getAvatar()->getFileName();
var_dump($currentUser->getAvatar());exit;

输出 :

object(Proxies\__CG__\Participso\UserBundle\Entity\Avatar)[355]
    private 'id' (Participso\UserBundle\Entity\Avatar) => int 20
    private 'fileName' (Participso\UserBundle\Entity\Avatar) => string 'd4e5eadd3757498a22b14ad1f81869c2baf459d3.png'

这很烦人。我将创建一个新帖子来解决此问题。

编辑:新的帖子在这里,并已解决:

为了避免从准则中延迟加载,只需添加fetch="EAGER"您的父实体:

/**
 * @OneToOne(targetEntity="User")
 * @JoinColumn(name="user_id", referencedColumnName="id", fetch="EAGER")
 */

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

无法从Symfony2中的实体获取数据

来自分类Dev

无法从Symfony2中的实体获取数据

来自分类Dev

Symfony2:无法使用表单创建新实体

来自分类Dev

Symfony2:从集合中间删除实体

来自分类Dev

在Symfony2中将实体字段类型显示为每个实体的某些属性的表

来自分类Dev

无法更新实体Symfony2

来自分类Dev

无法更新实体Symfony2

来自分类Dev

Symfony2:在用户实体中获取组的角色,但避免在实体内部进行查询

来自分类Dev

在Symfony2中将Doctrine2实体侦听器注册为服务

来自分类Dev

symfony2 doctrine2:删除在过去的迁移中使用的实体类

来自分类Dev

在Symfony2中,如何使用户帐户过期?

来自分类Dev

Symfony2 FOSUserBundle不使用UserManager提供缓存的用户实体

来自分类Dev

在Symfony2中使用Twig删除URL参数

来自分类Dev

当referencedColumnName与“ id”不同时,在Symfony2中使用“解析目标实体”的实体之间的关系

来自分类Dev

Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

来自分类Dev

Symfony2将实体分配给用户

来自分类Dev

symfony2原始用户实体,角色分配

来自分类Dev

无法通过Ajax将实体保存在symfony2中,格式无效

来自分类Dev

无法将现有实体映射到symfony2中的嵌入式表单

来自分类Dev

不是symfony2中的authanticat用户

来自分类Dev

不是symfony2中的authanticat用户

来自分类Dev

Symfony2 OneToMany嵌入表单无法保存实体

来自分类Dev

删除Symfony2中的数据

来自分类Dev

Symfony2:FOSUserBundle删除配置文件中的“编辑用户名”表单字段

来自分类Dev

如何不使用Doctrine刷新Symfony2中的持久实体?

来自分类Dev

从未使用Doctrime ORM对Symfony2中的不同实体重复ID

来自分类Dev

使用Symfony2中的Doctrine ORM注释将“间接关联”实体添加为成员

来自分类Dev

Ajax网址无法使用+ Symfony2

来自分类Dev

在symfony2表单构建器中访问底层实体

Related 相关文章

  1. 1

    无法从Symfony2中的实体获取数据

  2. 2

    无法从Symfony2中的实体获取数据

  3. 3

    Symfony2:无法使用表单创建新实体

  4. 4

    Symfony2:从集合中间删除实体

  5. 5

    在Symfony2中将实体字段类型显示为每个实体的某些属性的表

  6. 6

    无法更新实体Symfony2

  7. 7

    无法更新实体Symfony2

  8. 8

    Symfony2:在用户实体中获取组的角色,但避免在实体内部进行查询

  9. 9

    在Symfony2中将Doctrine2实体侦听器注册为服务

  10. 10

    symfony2 doctrine2:删除在过去的迁移中使用的实体类

  11. 11

    在Symfony2中,如何使用户帐户过期?

  12. 12

    Symfony2 FOSUserBundle不使用UserManager提供缓存的用户实体

  13. 13

    在Symfony2中使用Twig删除URL参数

  14. 14

    当referencedColumnName与“ id”不同时,在Symfony2中使用“解析目标实体”的实体之间的关系

  15. 15

    Doctrine2 + Symfony2:如何在Symfony2中使用命名空间的Doctrine实体?

  16. 16

    Symfony2将实体分配给用户

  17. 17

    symfony2原始用户实体,角色分配

  18. 18

    无法通过Ajax将实体保存在symfony2中,格式无效

  19. 19

    无法将现有实体映射到symfony2中的嵌入式表单

  20. 20

    不是symfony2中的authanticat用户

  21. 21

    不是symfony2中的authanticat用户

  22. 22

    Symfony2 OneToMany嵌入表单无法保存实体

  23. 23

    删除Symfony2中的数据

  24. 24

    Symfony2:FOSUserBundle删除配置文件中的“编辑用户名”表单字段

  25. 25

    如何不使用Doctrine刷新Symfony2中的持久实体?

  26. 26

    从未使用Doctrime ORM对Symfony2中的不同实体重复ID

  27. 27

    使用Symfony2中的Doctrine ORM注释将“间接关联”实体添加为成员

  28. 28

    Ajax网址无法使用+ Symfony2

  29. 29

    在symfony2表单构建器中访问底层实体

热门标签

归档