我遇到了无效映射问题。我一直收到错误消息:
在“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。我考虑到了这一点:
提前致谢!
答案 0 :(得分:7)
您收到此错误的原因是,Schedule
实体中的所有列都标记为Id
。
只需从@ORM\Id
的所有列中删除$id
- 这应该可以解决问题