我的实体 User 和 UserMeta 之间存在 OneToOne 关系
我想访问 User 中的 UserMeta,但在我的 mysql 数据库的 UserMeta 表中设置外键:
class User implements UserInterface{
/**
* @ORM\Column(type="integer", unique=true)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Foo\Bar\Entity\UserMeta", cascade={"persist"}, inversedBy="id_user")
* @ORM\JoinColumn(nullable=true)
* @ORM\Column(name="id_pro")
*/
private $proData;
}
class UserMeta{
/**
* @ORM\Column(type="integer", unique=true)
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\OneToOne(targetEntity="Foo\Bar\Entity\User", mappedBy="id_pro")
* @ORM\JoinColumn(nullable=true)
* @ORM\Column(name="id_user")
*/
private $user;
}
无论如何都要用 Doctrine 来做到这一点?我认为我误解了映射和反转属性。
最佳答案
您的映射配置错误。
在您的用户类中,它应该显示为:
/**
* @ORM\OneToOne(targetEntity="Foo\Bar\Entity\UserMeta", cascade={"persist"}, inversedBy="user")
* @ORM\JoinColumn(nullable=true)
*/
private $proData;
在你的 UserMeta 类中,它应该是:
/**
* @ORM\OneToOne(targetEntity="Foo\Bar\Entity\User", mappedBy="proData")
* @ORM\JoinColumn(nullable=true)
*/
private $user;
您也不需要 @ORM\Column 指令,因为 Doctrine2 会自动为您执行此操作。
关于php - 反向外键 Doctrine ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24550354/