Php 缺少主键id的值Symfony2

Php 缺少主键id的值Symfony2,php,mysql,symfony,doctrine-orm,Php,Mysql,Symfony,Doctrine Orm,我正在研究交响乐2.8.2中两个实体之间的连接。我不断得到“主键id缺少值” 下面是缺少id的id注释 /** * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue(strategy="AUTO") */ protected $id; 以下是我的加入: /** * @ORM\OneToOne(targetEntity="FYP\BaseDesignBundle\Entity\SessionDesign", inv

我正在研究交响乐2.8.2中两个实体之间的连接。我不断得到“主键id缺少值”

下面是缺少id的id注释

 /**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
protected $id;
以下是我的加入:

/**
 * @ORM\OneToOne(targetEntity="FYP\BaseDesignBundle\Entity\SessionDesign", inversedBy="user")
 * @ORM\JoinColumn(name="fcid", referencedColumnName="id")
 */
private $sessionDesign;


/**
 * @ORM\OneToOne(targetEntity="FYP\UserBundle\Entity\User", inversedBy="sessionDesign")
 * @ORM\JoinColumn(name="id", referencedColumnName="fcid")
 */
private $user;

这是来自您的协会的
join列
名称的错误

将映射更改为:

/**
 * @ORM\OneToOne(targetEntity="FYP\UserBundle\Entity\User", inversedBy="sessionDesign")
 * @ORM\JoinColumn(name="user_id", referencedColumnName="id")
 */
private $user;
注意:这是默认配置,也可以删除该行,因为它是无用的

编辑

没有指出真正的问题,我是对的。
出现此错误是因为您试图将非主键的列用作
joinColumn的
referencedColumnName

以下是:

* @ORM\JoinColumn(name="id", referencedColumnName="fcid")
应该是:

* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
从处开始(与完全相同的错误相关):

不能使用指向非主键的联接列。条令将认为这些是主键,并使用数据创建延迟加载代理,这可能导致意外结果。出于性能原因,条令不能在运行时验证此设置的正确性,只能通过validate Schema命令进行验证

类似问题


在SessionDesign和User之间有两个“inversedBy”是故意的吗?不,不是故意的,我没听清楚。不幸的是,这并不能解决问题。你的问题仍然存在吗?是的,这不是解决办法。那么,有可能使用两个无主键进行连接吗?好的,但我不明白的是,id是sessionDesign的主键,fcid是对它的外部引用。就是这样。联接列必须是非主键,但引用必须是。查看phpMyAdmin中表的关系视图,您将看到:
列“foo_id”=>外键约束=>“bartable.id”
。第一个是连接,最后一个是引用(目标表的主键)。我误解了。你的问题也有答案吗?