学说问题(映射不一致)


Doctrine issue (mappings inconsistent)

我正忙于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;

在我的学校里.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;

和等级.php

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

我只想知道这些错误到底意味着什么以及为什么这些实体不正确 - 我尝试从教义页面上关注文档,但显然我在某处出错了!

感谢您的任何帮助!

我没有

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

关于第一个,你说映射看起来像这样:

# 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实体不应具有 integer 类型的成员$provinceId;相反,它应该$province有一个类型 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;

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