Symfony2将实体分配给用户

时间:2014-07-28 12:04:39

标签: symfony doctrine-orm

目前存在三个捆绑包:AcmeSecurityBundle,AcmeUserBundle和BloggerBlogBu​​ndle。

如何从不同的Bundle中为用户实体分配博客实体?在保存博客实体的地方,你如何自动分配User.id?

AcmeUserBundle包含用户实体:

class User implements AdvancedUserInterface, \Serializable
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", length=25, unique=true)
     */
    private $username;
....
}

BloggerBlogBu​​ndle包含博客实体:

class Blog 
{
    /**
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @ORM\Column(type="string", text)
     */
    private $body;
....
}

学说关系如何设定?用户可以拥有多个博客,博客可以拥有一个用户。

AcmeSecurityBundle正常工作并允许用户登录,问题纯粹是将用户分配给博客。

1 个答案:

答案 0 :(得分:0)

如果targetEntity位于不同的捆绑包中,请在此处说明正确的方法http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html

基本上你不想在Bundles之间引入依赖关系。相反,您需要使用ResolveTargetEntityListener,这样可以避免两个Bundles都知道一个和另一个,因此UserBundle仍然可以在没有BlogBu​​ndle的情况下使用,但BlogBu​​ndle需要UserBundle。

然后,如果要将用户持久保存到数据库中,调用控制器中的$ this-> getUser()将获取当前登录的用户,然后可以将其设置为博客实体。