我正在创建一个用户可以创建相册的网站 我想为每个用户创建一个默认相册。
我想创建一个Album实体并将其保存在User类的构造函数中。
有可能吗? 我只知道实体管理器无法从实体访问...这就是为什么它对我来说是个问题。
答案 0 :(得分:2)
即使技术上可行,我强烈建议你不要这样做。
要回答你的问题,可以这样做:
class User extends FOSUser
{
/**
* @ORM\OneToMany(targetEntity="Album", cascade={"persist"})
*/
private $albums;
public function __construct()
{
$this->albums = new ArrayCollection();
$this->addAlbum(new Album());
}
public function addAlbum(Album $album)
{
$this->albums[] = $album;
}
public function getAlbums()
{
return $this->albums:
}
}
每当您创建新用户并保存时,使用此设置,将与其一起创建相关相册。我必须重复,尽管可能,但不要这样做。
很少有策略可用于实现您的目标。
如果你没有使用1.3.x版本的FOSUserBundle而是master,你可以看到RegistrationController触发了一些事件。您感兴趣的是FOSUserEvents::REGISTRATION_INITIALIZE
。你应create an event listener并在听众中为用户添加专辑。
如果您使用旧版本之一,这些活动很遗憾不会存在,您可以采取两种方式。
createUser
method。您可以在那里添加您的相册添加逻辑。我更喜欢这种方法。