原则-“缺少主键的值” [英] Doctrine - "Missing value for primary key"

查看:108
本文介绍了原则-“缺少主键的值”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对无效的映射有疑问。我不断收到错误消息:

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆