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
.
中所做的一样
我有两个 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
.