目前存在三个捆绑包:AcmeSecurityBundle,AcmeUserBundle和BloggerBlogBundle。
如何从不同的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;
....
}
BloggerBlogBundle包含博客实体:
class Blog
{
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", text)
*/
private $body;
....
}
学说关系如何设定?用户可以拥有多个博客,博客可以拥有一个用户。
AcmeSecurityBundle正常工作并允许用户登录,问题纯粹是将用户分配给博客。
答案 0 :(得分:0)
如果targetEntity位于不同的捆绑包中,请在此处说明正确的方法http://symfony.com/doc/current/cookbook/doctrine/resolve_target_entity.html
基本上你不想在Bundles之间引入依赖关系。相反,您需要使用ResolveTargetEntityListener,这样可以避免两个Bundles都知道一个和另一个,因此UserBundle仍然可以在没有BlogBundle的情况下使用,但BlogBundle需要UserBundle。
然后,如果要将用户持久保存到数据库中,调用控制器中的$ this-> getUser()将获取当前登录的用户,然后可以将其设置为博客实体。