Symfony2 OnetoOne关系

时间:2015-03-21 16:39:57

标签: symfony doctrine-orm

我有两个类,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;
}

2 个答案:

答案 0 :(得分:0)

即使文档声称不必要,您也尝试过:

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

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

答案 1 :(得分:0)

你必须在@ORM前面添加所有这样的注释:

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

这" Unidirectional association"需要放在User实体上(因为我认为你想要从User对象中加载这些信息......)而且你不需要关心外键,因为doctrine会自动创建它。 / p>

所以在$personalData实体上放置User属性并在那里应用关联,然后从$userId删除PersonalData并添加$id属性,如同User