颠倒外国主义学说

时间:2014-07-03 09:47:54

标签: php mysql symfony orm doctrine

我的实体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;
}

无论如何用学说做到这一点?我想我误解了映射和反转的属性。

1 个答案:

答案 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会自动为您执行此操作。