原则 - "缺少主键的价值"

时间:2014-06-11 12:33:22

标签: symfony doctrine-orm doctrine

我遇到了无效映射问题。我一直收到错误消息:

  

在“Namespace \ XXX \ Entity \ Subject”

上缺少主键课程的值

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

  

[Mapping] FAIL - 实体类'Namespace \ XXX \ Entity \ Subject'映射无效:   *关联'schedule'的连接列必须与目标实体'Namespace \ XXX \ Entity \ Subject'的所有标识符列匹配,但是'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;

计划实体

/ **      * @var整数      *      * @ORM \ Column(name =“id”,type =“integer”)      * @ORM \ Id      * /     私人$ 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。我考虑到了这一点:

db model

提前致谢!

1 个答案:

答案 0 :(得分:7)

您收到此错误的原因是,Schedule实体中的所有列都标记为Id

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