php - Symfony2 日期时间查询生成器

标签 php doctrine symfony

我有 2 个 DateTime Symfony2 项目中的类。我有实体 Stat,其中有 $date 属性。

/**
 * @ORM\Column(type="date", length="11")
 */
protected $date;

我必须使用 createQueryBuilder 中的 DateTime 对象进行查询。我怎样才能做到这一点 ?例如:

$date_from = new DateTime('2012-02-01');
$date_to = new DateTime('2012-02-15');

我需要从 $date_from 和 $date_to 之间的表 stats(实体 Stat)中获取所有行。我应该如何使用 createQueryBuilder 编写查询?我当前的代码是:

$qb = $em->createQueryBuilder();
$query = $qb->select('s')
            ->from('ACME\MyBundle\Entity\Stat', 's')
            ->where('s.date >= :date_from')
            ->andWhere('s.date <= :date_to')
            ->setParameter('date_from', $date_from)
            ->setParameter('date_to', $date_to)
            ->getQuery();

最佳答案

本杰明的回答是正确的,但缺少一个细节。 这是正确的做法:

$qb->andWhere($qb->expr()->between('s.date', ':date_from', ':date_to'));

但是要设置参数,我需要这样做:

$qb->setParameter('date_from', $date_from, \Doctrine\DBAL\Types\Type::DATETIME);
$qb->setParameter('date_to', $date_to, \Doctrine\DBAL\Types\Type::DATETIME);

如果我省略 DATETIME 类型,我会收到以下错误(请参阅 here):

Object of class DateTime could not be converted to string

我正在使用 Doctrine DBAL 2.0.5,此行为在 Doctrine 的更高版本中可能已更改。

关于php - Symfony2 日期时间查询生成器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9493992/

相关文章:

php - 在 PHP 中用没有循环的值填充数组

php - 如何获取 Silex 上的所有 GET 参数?

php - Doctrine :渴望加载懒惰关系的关系?

symfony - 使用ElasticaBundle和Translatable搜索多语言记录

php - 按 Doctrine QueryBuilder 中的计算字段排序

php - 如何在每天午夜 12 点旋转图像?

java - 将 Json 从 Java 应用程序传递到 PHP (Laravel)

php - PHP 中的哪些代码片段可以创建一个输入表单,从而在我的 mysql 数据库中创建一组新数据?

symfony - 带连接表和两个连接的 DQL 查询

php - Doctrine DQL - 选择添加为新记录的列别名