php - 反向外键 Doctrine

标签 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;
}

无论如何都要用 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/

相关文章:

php - 如何抓取、排序和显示热门评论者 (PHP/MySQL)?

PHP:获取自己的脚本刚刚通过关闭功能发送的http状态代码

mysql - 如何用其他功能替换/优化 IN?

mysql - 使用 MySQL 的存储过程语法问题

MYSQL IN 子句仅返回第一个值组合的结果

php - Symfony 防火墙在做什么需要这么长时间?

php - 使用多个 PHP 类的最佳方法是什么?

magento - 将产品默认图片更新为图片库中的第一张图片

php - Symfony2用户密码修改

php - 检查调试 :autowiring 时找不到类 WebTestCase