4

我正忙于 Symfony 中的一个项目,我只是在检查分析器选项卡并看到不断弹出 2 个错误 - 它们在下面。

The mappings MyBundle\MainBundle\Entity\School#provinceId and MyBundle\MainBundle\Entity\Province#schools are incosistent with each other.

The association MyBundle\MainBundle\Entity\School#grades refers to the owning side field MyBundle\MainBundle\Entity\Grade#school_id which does not exist.

我得到了更多这些,我不明白为什么?“不一致”是什么意思(看看我在那里做了什么)?如果有帮助,我的部分代码如下。

在省.php

/**
  * @ORM\OneToMany(targetEntity="School", mappedBy="provinceId")
 */ 
private $schools;

在我的 Schools.php 中

/**
 * @var integer
 *
 * @ORM\ManyToOne(targetEntity="Province", inversedBy="schools")
 * @ORM\JoinColumn(name="province_id", referencedColumnName="id")
 */
private $provinceId;

对于第二个错误...

学校.php

/**
 * @ORM\OneToMany(targetEntity="Grade", mappedBy="school_id")
 */
private $grades;

和 Grade.php

/**
 * @var integer
 *
 * @ORM\ManyToOne(targetEntity="School", inversedBy="grades")
 * @ORM\JoinColumn(name="school_id", referencedColumnName="id")
 */
private $schoolId;

我只是想知道这些错误的确切含义以及为什么这些实体不正确-我尝试按照教义页面上的文档进行操作,但显然我在某个地方出错了!

谢谢你的帮助!

4

1 回答 1

9

我没有你的完整配置,所以我只是在这里做一个有根据的猜测......(如果我错了,请原谅我!)

关于第一个,您说映射如下所示:

# Province.php
/**
  * @ORM\OneToMany(targetEntity="School", mappedBy="provinceId")
 */ 
private $schools;

# School.php
/**
 * @var integer
 *
 * @ORM\ManyToOne(targetEntity="Province", inversedBy="schools")
 * @ORM\JoinColumn(name="province_id", referencedColumnName="id")
 */
private $provinceId;

我想这是在这里扔东西的类型。你看,映射的目的是让你可以像对待对象一样对待这些东西,而不必担心它们是如何在数据库中持久化/连接的。具体来说,在您的情况下,School实体不应具有$provinceIdtype的成员integer;相反,它应该有一个$provincetype Province

尝试这个:

# Province.php
/**
  * @ORM\OneToMany(targetEntity="School", mappedBy="province")
 */ 
private $schools;

# School.php
/**
 * @var Province
 *
 * @ORM\ManyToOne(targetEntity="Province", inversedBy="schools")
 * @ORM\JoinColumn(name="province_id", referencedColumnName="id")
 */
private $province;

(同样,这完全未经测试,我只有你所拥有的一部分......但我认为这会让你更接近。)

于 2013-11-08T23:31:28.493 回答