Php 缺少主键id的值Symfony2
我正在研究交响乐2.8.2中两个实体之间的连接。我不断得到“主键id缺少值” 下面是缺少id的id注释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
/**
* @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”
。第一个是连接,最后一个是引用(目标表的主键)。我误解了。你的问题也有答案吗?