输入:
: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'
答案 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();