duanhe3393 2015-05-26 21:58
浏览 18
已采纳

创建操作。 为具有1对1关系的两个实体生成表单

What I want to achieve:

User entity have UserInfo property where is stored all info about User. I wan't to create UserInfo entity when User entity is created and link these two.

UserType:

...
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('username')
        ->add('password', 'password') //drugi argument robi input jako password
    ;

    $builder->add('info', new UserInfoType());
}
...

User:

...

/**
 * @var UserInfo
 * 
 * @ORM\OneToOne(targetEntity="UserInfo", mappedBy="owner", cascade={"persist", "remove"})
 * */
private $info;

...

UserInfo:

 /** 
 * @var User
 * 
 * @ORM\OneToOne(targetEntity="User", inversedBy="info", cascade={"persist"})
 * @ORM\JoinColumn(name="owner_id", referencedColumnName="id")
 **/
private $owner;
...

 /**
 * Set owner
 *
 * @param \Custom\AzureusBundle\Entity\User $owner
 * @return UserInfo
 */
public function setOwner(\Custom\AzureusBundle\Entity\User $owner)
{
    $owner->setInfo($this);
    $this->owner = $owner;

    return $this;
}

Why after creating User and UserType at the same time (same form) userInfo hasn't owner_id value in database? These entities are not linking each other after creating.

I assume that I should call setOwner() function somewhere. But I don't know where.

  • 写回答

1条回答 默认 最新

  • dongxing2692 2015-05-26 22:44
    关注

    As @Cerad said in comment above I should create UserInfo in User controller (Create function).

    public function createAction(Request $request)
        {
            $entity = new User();
            $user_info = new UserInfo();
            $entity->setInfo($user_info);
            $user_info->setOwner($entity);
            ...
    
            if ($form->isValid()) {
                ...
                $em->persist($entity);
                $em->persist($user_info);
                ...
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 phython如何实现以下功能?查找同一用户名的消费金额合并—
  • ¥15 孟德尔随机化怎样画共定位分析图
  • ¥18 模拟电路问题解答有偿速度
  • ¥15 CST仿真别人的模型结果仿真结果S参数完全不对
  • ¥15 误删注册表文件致win10无法开启
  • ¥15 请问在阿里云服务器中怎么利用数据库制作网站
  • ¥60 ESP32怎么烧录自启动程序
  • ¥50 html2canvas超出滚动条不显示
  • ¥15 java业务性能问题求解(sql,业务设计相关)
  • ¥15 52810 尾椎c三个a 写蓝牙地址