我在尝试使用Symfony 2.7.11持有具有相关实体的新实体时遇到问题。
我需要创建一个可以拥有许多大学的Landing,因此我创建了3个表
降落
- landingId(主键)
大学
- universityId(主键)
landingUniversity
- landingId(都是主键)(外键登陆)
- universityId(外国重点大学)
我只有2个实体(登陆和大学)和多对多关系(单向,因为我只是想知道大学加入登陆,所以大学没有任何关于着陆的事情)
首先,我在我的数据库中找到每个大学并保存它们。然后我创建了新的Landing并添加了所有这些。
$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;
非常感谢!!!
答案 0 :(得分:0)
错误消息非常明确。你的错误在这里:
joinColumns={@ORM\JoinColumn(name="landingId", referencedColumnName="landingId")}
应该是
joinColumns={@ORM\JoinColumn(name="landingId", referencedColumnName="landingid")}
因为您的Landing实体不包含任何landingId数据库字段,而是包含landingid。
但您宁愿编辑$ id属性的列名:
/**
* @var integer
*
* @ORM\Column(name="landingId", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;