【发布时间】:2015-02-17 07:34:23
【问题描述】:
输入:
:startPrice = 180
:targetPrice = 300
在数据库中,我有一个价格列,需要找到价格列位于 180 和 300 之间的所有行。
数据库中的价格值:
price = 270
price = 278
那么我们如何才能看到我在下面写的查询必须获取这两个行,但我只得到第一个(270)。
有人能解释一下为什么 BETWEEN 条件只从数据库中获取一行吗?这是数据库查询生成器:
$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'
【问题讨论】:
-
您确定数据库中有更多应该匹配的数据吗?此外,您没有为查询设置参数
-
数据库中的两行价格分别为 270 和 278。我找到了 beetwen 250 和 300。
-
如果你让“MaxResults”选项退出,结果是什么?
-
@KhorneHoly,同样...数组中的单个元素(对象)
-
这真的很奇怪.. 价格是否存储为
integer?您是否将参数指定为string?否则我会通过 symfony2 或 Doctrine 的 github 提出问题
标签: php symfony doctrine query-builder