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