原则-“缺少主键的值” [英] Doctrine - "Missing value for primary key"
问题描述
我对无效的映射有疑问。我不断收到错误消息:
I have a problem with an invalid mapping. I keep getting an error with message:
Namespace\XXX\Entity\Subject上主键课程的缺失值
Missing value for primary key course on "Namespace\XXX\Entity\Subject"
doctrine:schema:validate命令返回以下内容:
The doctrine:schema:validate command returns the following:
[映射]失败-实体类名称空间\XXX\实体\主题映射无效:
*关联日程表的联接列必须与ALL标识符匹配目标实体名称空间\XXX\实体\主题的列,但是缺少 id,路线,班级,日期,时间段。
[Mapping] FAIL - The entity-class 'Namespace\XXX\Entity\Subject' mapping is invalid: * The join columns of the association 'schedule' have to match to ALL identifier columns of the target entity 'Namespace\XXX\Entity\Subject', however 'id, course, class, day, timeslot' are missing.
这是我的映射:
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="message", type="string", length=255)
*/
private $message;
/**
* @ORM\ManyToOne(targetEntity="Oggi\ScheduleBundle\Entity\Schedule", inversedBy="subjects")
* @ORM\JoinColumn(name="schedule", referencedColumnName="id")
*/
private $schedule;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="date")
*/
private $date;
/**
* @var \DateTime
*
* @ORM\Column(name="created", type="datetime")
*/
private $created;
计划实体
/ **
* @var整数
*
* @ ORM\Column(name = id,type = integer)
* @ ORM\Id
* /
private $ id;
Schedule Entity
/** * @var integer * * @ORM\Column(name="id", type="integer") * @ORM\Id */ private $id;
/**
* @var string
*
* @ORM\Id
* @ORM\OneToOne(targetEntity="Oggi\KlasBundle\Entity\Course")
* @ORM\JoinColumn(name="course", referencedColumnName="id")
*/
private $course;
/**
* @var string
*
* @ORM\Id
* @ORM\ManyToOne(targetEntity="Oggi\KlasBundle\Entity\Klas", inversedBy="schedules")
* @ORM\JoinColumn(name="class", referencedColumnName="id")
*/
private $klas;
/**
* @var string
*
* @ORM\Id
* @ORM\OneToOne(targetEntity="Day")
* @ORM\JoinColumn(name="day", referencedColumnName="id")
*/
private $day;
/**
* @var string
*
* @ORM\Id
* @ORM\OneToOne(targetEntity="Timeslot")
* @ORM\JoinColumn(name="timeslot", referencedColumnName="id")
*/
private $timeslot;
/**
* @ORM\OneToMany(targetEntity="Oggi\CalendarBundle\Entity\Subject", mappedBy="schedule")
*/
private $subjects;
我想Symfony告诉我要做的是将所有主键都包含在我的主体中。有没有一种方法可以只在该实体中包含计划的ID。我想到了:
I suppose that what Symfony is telling me to do is include all primary keys in my subject-entity. Is there a way to only include the ID of the schedule in this entity. I had this in mind:
预先感谢!
推荐答案
出现此错误的原因是因为您的时间表
实体中的所有列都标记为 Id
。
The reason you get this error is because all columns in your Schedule
entity are marked as an Id
.
只需从除 $ id
之外的所有列中删除 @ ORM\Id
-这样就可以解决这种情况
Just remove @ORM\Id
from all columns but $id
- this should fix the case
这篇关于原则-“缺少主键的值”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!