【发布时间】:2014-06-25 05:43:47
【问题描述】:
上下文:
我用 symfony2 开发了一个 Rest API。我使用 Doctrine、FOSUserBundle 和 FOSRestBundle。
我用注释配置我的实体。我使用控制台生成了我的实体。
我有两个实体:User 和 Plan。User 扩展了 FOS\UserBundle\Model\User 的 FOSUserBundle。
这两个实体通过双向ManyToOne 关系链接(一个计划有很多用户)。
所以我在数据库的user 表中有一个int(11) 类型的外键plan_id。
这是我的实体的代码:
计划:
class Plan implements PlanInterface
{
/* ... */
/**
* @ORM\OneToMany(targetEntity="...\UserBundle\Entity\User", mappedBy="plan")
*/
private $users;
public function __construct()
{
$this->users = new \Doctrine\Common\Collections\ArrayCollection();
}
/* ... */
}
用户:
class User extends BaseUser
{
/* ... */
/**
* @ORM\ManyToOne(targetEntity="...\PlanBundle\Entity\Plan", inversedBy="users")
* @ORM\JoinColumn(columnDefinition="INT(11) default '1'")
*/
private $plan;
/**
* Constructor
*/
public function __construct()
{
parent::__construct();
}
/* ... */
}
问题 :
当我创建新用户时,我希望在表 user 的列 plan_id 中放置一个默认值(值 1 的 int,代表表 plan 的第一个条目)。
我希望我是清楚的,
提前谢谢你。
【问题讨论】:
-
注释无法实现您想要做的事情。您可能应该只在单独的服务中拥有用于创建用户的逻辑,其中包括将此默认计划添加到用户。见this question
-
@Peter 我不知道怎么做,我尝试时它不起作用。
-
@ChadSikorra 我试过了,效果很好。但是,当我不使用控制器时,当我通过控制台或所有其他方式创建用户时,我也会将 plan_id 设置为 1。
标签: symfony doctrine-orm annotations entity foreign-key-relationship