Php Symfony 2实体与相关实体

Php Symfony 2实体与相关实体,php,symfony,doctrine-orm,Php,Symfony,Doctrine Orm,我在尝试使用Symfony 2.7.11持久化具有相关实体的新实体时遇到问题 我需要创建一个平台,可以有许多大学,所以我创建了3个表 降落 landingId(主键) 大学 大学ID(主键) 兰登语大学 landingId(两者都是主键)(外键登录) 大学(外国重点大学) 我只有两个实体(登陆和大学)和一个多对多关系(单向,因为我只想知道登陆中增加了哪些大学,所以大学对登陆一无所知) 首先,我在数据库中找到每一所大学并保存它们。然后我创建新的平台并添加所有这些平台 $universi

我在尝试使用Symfony 2.7.11持久化具有相关实体的新实体时遇到问题

我需要创建一个平台,可以有许多大学,所以我创建了3个表

降落

  • 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。这就是问题所在。我没有注意到字段是小写的。。。谢谢!很高兴这有帮助。如果答案有帮助,请使用答案左侧的勾号接受(如果需要,请向上投票)。谢谢你。这将帮助其他有相同问题的用户轻松找到它,并在同一时间奖励我。