[英]How to get one with children?
我有簡單的查詢:
$query = $qb->select('c, s')
->from('AppBundle:City', 'c')
->leftJoin('c.streets', 's')
->where('o.name = :name')
->setParameter('name', 'London')
->andWhere('s.numbers > :number')
->setParameter('number', 10000);
$result = $query->getQuery()->getOneOrNullResult();
我想通過關系來了解城市和街道。 如果城市和街道的數字> 10000存在,則此查詢運行良好,但是,如果城市存在且數字> 10000,則此查詢返回null。 為什么,如果我使用leftJoin而不加入?
即使城市沒有街道,我該如何獲得城市?
如果您的實體Streets
實體已映射到您的City
實體,則您不需要此類查詢。
在樹枝中,只需執行以下操作:
{% for steet in city.streets %}
<div>steet.name</div>
<div>steet.length</div>
<div>steet.etc</div>
{% endfor %}
否則,要更正您的查詢,應該是這樣的:
public function getCityStreets(City $city, $street) {
// param $city :: Entity City
// param $street :: Integer
return $this->createQueryBuilder()
->select('c', 's')
->from('AppBundle:City', 'c')
->join('AppBundle:Streets', 's')
->where('c.name = :city')
->andWhere('s.number = :street_number')
->andWhere('s.city = :street_city)
->setParameters(array(
new Parameter('city', $city->getName()),
new Parameter('street', $street),
new Parameter('street_city', $city->getId()),
))
->getQuery()
->getArrayResult();
}
o.name
在查詢中無效... o
在任何地方都沒有設置 'c.streets', 's'
也無效,您可以加入Steets
,但不能作為City
的列 join
Streets
映射到City
,可以join
leftJoin
,其中不應有任何NULL
值的street.city
良好做法提示 :實體名稱絕不能為復數形式
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.