我目前正在使用 Zend Framework 2 和一个带有日期范围的查询来从 MySQL 数据库中获取数据,我遇到了以前在 ZF1 中不可用的 between 子句。
但是,我的代码看起来像这样无法正常工作:
$dateStart = '2012-12-20';
$dateEnd = '2012-12-31';
$sql = new Sql($_db);
$select = $sql->select()
->from(array("t" => $table))
->columns(array("col1" => "col_as_1", "col2" => "col_as_2"));
$select->where->between("date", $dateStart, $dateEnd);
$stmt = $sql->prepareStatementForSqlObject($select);
$result = $stmt->execute()->getResource()->fetchAll(\PDO::FETCH_ASSOC);
显然 between 子句不包含在内,我只能在 2012-12-30 之前得到结果,有没有办法让它包含在内?我一直在查看 ZF2 文档,但它们不是很有用,在 MySQL 查询浏览器上运行相同的查询会返回我需要的所有数据。
最佳答案
所以你可以试试lessThanOrEqualTo
和 greaterThanOrEqualTo
.
Between 似乎不提供此功能:between($identifier, $minValue, $maxValue)
如果您使用 $select->__toString()
追踪您的查询您可以将查询视为字符串。
我的电脑上没有 ZF2,但我可以想象 between
在 ZF2 中将输出 date > '2012-12-20' AND date < '2012-12-31'
.
关于mysql - 使 Zend\Db (zf2) 包含在子句之间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14221292/