我在反向方面使用具有复合键的ManyToMany关系。
当我使用控制台命令doctrine:schema:update时,出现以下错误:
我有一个实体学生(唯一键),与一个实体技能(复合键)具有多对多关系,该实体技能与技能类型(唯一键)具有多对一关系。
以下是我拥有的不同类映射:
类 学生
班级技能
我尝试交换
我看不出我的映射有什么问题。表skill存在,并且具有名为
我希望有人能看到我犯了什么错误(可能是拼写错误,如缺少字符或大小写错误)。
[Doctrine\ORM\ORMException]
Column name `keyword` referenced for relation from Map\MapBundle\Entity\
Student towards Map\MapBundle\Entity\SkillType does not exist.
我有一个实体学生(唯一键),与一个实体技能(复合键)具有多对多关系,该实体技能与技能类型(唯一键)具有多对一关系。
以下是我拥有的不同类映射:
类 学生
<?php
namespace Map\MapBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Student
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Map\MapBundle\Entity\StudentRepository")
*/
class Student {
/**
*
* @var integer @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="Map\MapBundle\Entity\SkillType")
* @ORM\JoinTable(name="students_skills",
* joinColumns={
* @ORM\JoinColumn(name="keyword", referencedColumnName="keyword"),
* @ORM\JoinColumn(name="attribut", referencedColumnName="attribut")
* })
*/
private $skills;
}
班级技能
<?php
namespace Map\MapBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Skill
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Map\MapBundle\Entity\SkillRepository")
*/
class Skill {
/**
* @ORM\ManyToOne(targetEntity="Map\MapBundle\Entity\skillType")
* @ORM\JoinColumn(name="keyword", referencedColumnName="keyword")
* @ORM\Id
*/
private $keyword;
}
类别技能类型
<?php
namespace Map\MapBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* SkillType
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Map\MapBundle\Entity\SkillTypeRepository")
*/
class SkillType {
/**
* @var string
*
* @ORM\Column(name="keyword", type="string", length=255)
* @ORM\Id
*/
private $keyword;
}
我尝试交换
keyword
和attribut
的@joinColumn行,但我得到了与keyword
相同的错误消息,而不是attribut
。我看不出我的映射有什么问题。表skill存在,并且具有名为
keyword
和attribut
的列。我希望有人能看到我犯了什么错误(可能是拼写错误,如缺少字符或大小写错误)。