【问题标题】:Symfony findBy field nameSymfony findBy 字段名
【发布时间】:2021-07-15 10:50:06
【问题描述】:

我有关联 One Region ToMany Places。 在PlacesRepository.php 我有这个代码:

       $allPlacesArray = [];
       foreach ($placeTypes as $placeType){
           if($placeType == 'all'){
               $allPlacesArray = $this->findAll();
           }
           $allPlacesArray = array_merge($allPlacesArray, $this->findBy(['region' => 2]));
       }
       return $allPlacesArray;
   }

现在它通过id 字段搜索区域中的地点。 我想要的是从区域实体中按字段name 搜索区域中的地点,因为从客户端我收到区域的name 而不是id。我不明白,也找不到我该怎么做。我试过$this->findBy(['region.name' => 'Республика Крым'],但它不起作用。

【问题讨论】:

  • 在 Repository 中创建特殊方法并使用 queryBuilder 编写查询。

标签: php symfony findby


【解决方案1】:

如果有人需要这个问题的答案。 在存储库中:

public function findAllPlacesInRegion() {
            $queryBuilder = $this->createQueryBuilder('p')
                ->leftJoin('p.region', 'r')
                ->where('r.name like :region_name' )
                ->setParameter('region_name', 'Республика Крым');
            return $queryBuilder->getQuery()->getResult();
    }

【讨论】:

  • 您应该通过允许将区域作为参数传递来使其可重用
  • @exepti0n 在我的代码中我做到了。我的回答只是举例。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 2016-09-28
  • 2018-12-17
  • 2017-10-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多