Symfony2 OnetoOne 关系

Symfony2 OnetoOne relations

我有两个 class,User 和 PersonalData。我们需要在 Symfony2 中将 OnetoOne 与 Doctrine 联系起来。在我的代码中我尝试了这种关系,但在 MySQL 中没有出现外键。 我的代码:

namespace TFC\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

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

    /**
     * @var string
     */
    private $email;
}

    use Doctrine\ORM\Mapping as ORM;

/**
 * PersonalData
 */
/** @ORM\Entity */
class PersonalData
{

     /** @Id @OneToOne(targetEntity="User") */
    private $userId;

    /**
     * @var string
     */
    private $firstName;
}

即使文档声称没有必要,您是否尝试过类似的方法:

@JoinColumn(name="userId", referencedColumnName="id")

生成实体时会收到任何消息吗?

您必须像这样在所有注释前加上@ORM 前缀:

@ORM\Id
@ORM\Column(type="integer")
@ORM\GeneratedValue(strategy="AUTO")

这个“Unidirectional association”需要放在 User 实体上(因为我认为您想从用户对象加载该信息...)并且您不需要关心关于外键,因为学说会自动创建它。

所以在 User 实体上放置一个 $personalData 属性 并在那里应用关联,然后从 PersonalData 中删除 $userId 并添加 $id 属性 就像在 User.

中所做的一样