BETWEEN条件仅选择单行Symfony2

时间:2014-12-18 13:35:59

标签: php symfony doctrine query-builder

输入:

:startPrice = 180
:targetPrice = 300

在数据库中,我有一个价格列,需要查找价格列位于180和300的所有行。

DB中的价格值:

 price = 270
 price = 278

那么我们如何才能看到我在下面写的查询必须获取两行,但我只得到第一行(270)。

有人可以解释为什么BETWEEN条件只从DB获取一行吗?这是数据库查询构建器:

$query = $result = $this->getEntityManager()
        ->createQueryBuilder()
        ->select('t')
        ->from('VputiTripBundle:Trip', 't');
             $query
               ->andWhere('t.price > :startPrice')
                ->andWhere('t.price < :targetPrice');
            $parameters = [
                'startPrice' => $startPrice,
                'targetPrice' => $targetPrice,
            ];
        $query->setParameters($parameters)
        ->setMaxResults(10)
        ->getQuery()
         ->getResult();

查询字符串:

'SELECT t FROM VputiTripBundle:Trip t WHERE t.price > :startPrice AND t.price < :targetPrice'

1 个答案:

答案 0 :(得分:1)

试试这样:

$queryBuilder = $this->getEntityManager()->createQueryBuilder();

$query = $queryBuilder
        ->select('t')
        ->from('VputiTripBundle:Trip', 't')
        ->where($queryBuilder->expr()->between('t.price', ':startPrice', ':targetPrice'))
        ->setParameters([
            'startPrice' => $startPrice,
            'targetPrice' => $targetPrice
        ])
        ->getQuery();

        $query->setMaxResults(10);

        return $query->getResult();