協會這個問題是關係到我的另一個問題:Doctrine2 gives me only first instance of related objects錯誤:類... 實體 ..沒有名爲
我想出了雙向關聯,試圖解決我的老問題,但現在我還有一個問題。
架構[EDITED]:
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();
和錯誤是:
[Semantical Error] line 0, col 58 near 's ORDER BY c.population': Error: Class XYZ\Bundle\CitiesBundle\Entity\Cities has no association named state
產生DQL:
SELECT c, s FROM CitiesBundle:Cities c INNER JOIN c.state s ORDER BY c.population DESC
恥辱:(
有人能幫助我解決我的問題?
[編輯]
我編輯的城市架構,現在的錯誤是:
Notice: Undefined index: name in /home/marek/devel/sf2/cities/vendor/doctrine/lib/Doctrine/ORM/Mapping/Driver/YamlDriver.php line 473
謝謝。我做了你的建議。我編輯了我的問題來添加完整的城市模式和新的錯誤。 – keram
嗯它說它缺少名爲'name'的選項。你有沒有嘗試完全像我在上面的答案中寫的?也就是說,你用上面的xml代碼替換了「'state_id:referencedColumnName:id'」? –
我擁有YAML中的所有配置。我把它放在一起Cities.orm.yml – keram