学说 - "缺少主键价值"

Hel*_*ert 2 doctrine symfony doctrine-orm

我有一个无效映射的问题.我一直收到错误消息:

在"Namespace\XXX\Entity\Subject"上缺少主键课程的值

doctrine:schema:validate命令返回以下内容:

[Mapping] FAIL - 实体类'Namespace\XXX\Entity\Subject'映射无效:*关联'schedule'的连接列必须匹配目标实体'Namespace\XXX\Entity \的所有标识符列主题',但'id,course,class,day,timeslot'缺失.

这是我的映射:

主题实体

/**
 * @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;
Run Code Online (Sandbox Code Playgroud)

安排实体

/***@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;
Run Code Online (Sandbox Code Playgroud)

我想Symfony告诉我要做的是在我的主题实体中包含所有主键.有没有办法只在此实体中包含计划的ID.我考虑到了这一点:

数据库模型

提前致谢!

Tom*_*ski 7

出现此错误的原因是因为Schedule实体中的所有列都标记为Id.

只需@ORM\Id从所有列中删除$id- 但这应该可以解决问题