Php Symfony 2实体与相关实体
我在尝试使用Symfony 2.7.11持久化具有相关实体的新实体时遇到问题 我需要创建一个平台,可以有许多大学,所以我创建了3个表 降落Php Symfony 2实体与相关实体,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在尝试使用Symfony 2.7.11持久化具有相关实体的新实体时遇到问题 我需要创建一个平台,可以有许多大学,所以我创建了3个表 降落 landingId(主键) 大学 大学ID(主键) 兰登语大学 landingId(两者都是主键)(外键登录) 大学(外国重点大学) 我只有两个实体(登陆和大学)和一个多对多关系(单向,因为我只想知道登陆中增加了哪些大学,所以大学对登陆一无所知) 首先,我在数据库中找到每一所大学并保存它们。然后我创建新的平台并添加所有这些平台 $universi
- landingId(主键)
- 大学ID(主键)
- landingId(两者都是主键)(外键登录)
- 大学(外国重点大学)
$universityRepository = $this->em->getRepository('University');
$universities = array();
foreach ($listUniversities as $universityId){
$university= $cursosRepository->findById($universityId);
$universities[] = $university[0];
}
$newLanding = new Landing();
$newLanding->setName($landing["name"]);
foreach ($universities as $university){
$newLanding->addUniversity($university);
}
$em = $this->getEntityManager();
$em->persist($newLanding);
$em->flush();
当symfony执行flush()时,我得到了这个错误:
无法解析大学类的列“landingId”的类型
我做错了什么
我的实体:
/**
* Landing
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="LandingRepository")
*/
class Landing
{
/**
* @var integer
*
* @ORM\Column(name="landingid", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=250)
*/
private $name;
/**
* @var integer
*
* @ORM\ManyToOne(targetEntity="Language")
* @ORM\JoinColumn(name="languageId", referencedColumnName="languageId")
*/
private $languageId;
/**
* @ORM\ManyToMany(targetEntity="University")
* @ORM\JoinTable(name="landingUniversity",
* joinColumns={@ORM\JoinColumn(name="landingId", referencedColumnName="landingId")},
* inverseJoinColumns={@ORM\JoinColumn(name="unversityId", referencedColumnName="unversityId")}
* )
*/
private $universities;
非常感谢你 错误消息非常明确。您的错误如下:
joinColumns={@ORM\JoinColumn(name="landingId", referencedColumnName="landingId")}
应该是
joinColumns={@ORM\JoinColumn(name="landingId", referencedColumnName="landingid")}
因为您的登录实体不包含任何landingId数据库字段,而是包含landingId
但您更希望编辑$id属性的列名:
/**
* @var integer
*
* @ORM\Column(name="landingId", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
请同时发布大学课程。可能是一个案例问题。您的id列名为landingid,但您的联接具有landingid。这就是问题所在。我没有注意到字段是小写的。。。谢谢!很高兴这有帮助。如果答案有帮助,请使用答案左侧的勾号接受(如果需要,请向上投票)。谢谢你。这将帮助其他有相同问题的用户轻松找到它,并在同一时间奖励我。