我的实体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;
}
无论如何用学说做到这一点?我想我误解了映射和反转的属性。
答案 0 :(得分:0)
您映射配置错误。
在您的用户类中,它应显示为:
/**
* @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会自动为您执行此操作。