簡體   English   中英

如何帶孩子一個?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM