Symfony 错误:类…\Entity\。。没有名为的关联
这个问题与我的另一个问题有关: 我想出了双向关联来解决我的老问题,但现在我有另一个问题 模式[已编辑]:Symfony 错误:类…\Entity\。。没有名为的关联,symfony,doctrine-orm,yaml,one-to-many,Symfony,Doctrine Orm,Yaml,One To Many,这个问题与我的另一个问题有关: 我想出了双向关联来解决我的老问题,但现在我有另一个问题 模式[已编辑]: XYZ\Bundle\CitiesBundle\Entity\Cities: type: entity table: cities fields: id: id: true type: integer unsigned: false nullable: false generator: str
XYZ\Bundle\CitiesBundle\Entity\Cities:
type: entity
table: cities
fields:
id:
id: true
type: integer
unsigned: false
nullable: false
generator:
strategy: IDENTITY
name:
type: string
length: 50
fixed: false
nullable: false
landarea:
type: decimal
nullable: false
density:
type: integer
unsigned: false
nullable: false
population:
type: integer
unsigned: false
nullable: false
manyToOne:
state:
targetEntity: States
cascade: { }
inversedBy: cities
joinColumn:
state_id:
referencedColumnName: id
lifecycleCallbacks: { }
实体:
class Cities
{
//other vars
/**
* @var XYZ\Bundle\CitiesBundle\Entity\States
*/
private $state;
//other get/set
/**
* Set state
*
* @param XYZ\Bundle\CitiesBundle\Entity\States $state
*/
public function setState(\XYZ\Bundle\CitiesBundle\Entity\States $state)
{
$this->state = $state;
}
/**
* Get state
*
* @return XYZ\Bundle\CitiesBundle\Entity\States
*/
public function getState()
{
return $this->state;
}
}
class States
{
//other vars and get/set
private $cities;
public function __construct()
{
$this->cities = new \Doctrine\Common\Collections\ArrayCollection();
}
/**
* Add cities
*
* @param XYZ\Bundle\CitiesBundle\Entity\Cities $cities
*/
public function addCities(\XYZ\Bundle\CitiesBundle\Entity\Cities $cities)
{
$this->cities[] = $cities;
}
/**
* Get cities
*
* @return Doctrine\Common\Collections\Collection
*/
public function getCities()
{
return $this->cities;
}
}
QueryBuilder用法:
$query = $em->createQueryBuilder()
->select('c','s')
->from('CitiesBundle:Cities', 'c')
->innerJoin('c.state', 's')
->orderBy('c.population', 'DESC')
->setMaxResults(10)
->getQuery();
错误是:
[语义错误]第0行第58列靠近“c.population的顺序”:
错误:类XYZ\Bundle\CitiesBundle\Entity\Cities没有关联
命名国家
生成的DQL:
从CitiesBundle中选择c,s:城市c内部连接c.状态s订单依据
c、 人口描述
羞耻:(
有人能帮我解决我的问题吗
[编辑]
我编辑了城市模式,现在错误是:
注意:未定义索引:中的名称
/home/marek/devel/sf2/cities/vendor/doctor/lib/doctor/ORM/Mapping/Driver/YamlDriver.php
第473行
我确信
joinColumns:
(注意复数)只用于多对多关系中。在其他关系中,您应该使用joinColumn
在Cities XML中,尝试放置:
joinColumn:
name: state_id
referencedColumnName: id
除此之外,请尝试在XML中将“ManyToOne”重命名为“ManyToOne”,但我怀疑这是问题所在
希望这对…有所帮助。请注意,当使用Symfony时,它将首先查看映射YAML文件,而忽略您的实体注释。在加载YAML映射文件的过程中,我花了很长时间更改注释。谢谢。我按照您的建议做了。我编辑了我的问题以添加完整的城市模式和新错误。嗯,它说它丢失了ng选项名为name
。您是否完全按照我在上面的答案中所写的那样进行了尝试?也就是说,您确实用上面的xml代码片段替换了“state\u id:referencedColumnName:id
”?我在YAML中有所有配置。我将其全部放在了co Cities.orm.ymlSorry中,我的意思是YAML而不是xml:)谢谢,现在它可以工作了,但我在相关问题中遇到了相同的问题:/我遇到了这个问题,我更改了实体文件,但没有更改YAML文件(在doctor
文件夹中隐藏了多个实体文件)。编辑了YAML文件并解决了错误。