投射到查询生成器中

Cast into a querybuilder

我有一个这样的查询生成器:

        ->andWhere('i.createdAt LIKE :date')
        ->setParameter('date', $date.'%')

字段 created_at 是一个 DateTime,我的 $date 是一个字符串。 有没有办法将我的 created_at 转换为字符串?

我已经试过了:

            ->andWhere('i.createdAt::text LIKE :date')

控制台:

.... has no field or association named createdAt::text

或:

            ->andWhere('to_char(i.createdAt) LIKE :date')

控制台:

  [Syntax Error] line 0, col 208: Error: Expected known function, got 'to_char'

  [Syntax Error] line 0, col 208: Error: Expected known function, got 'cast'

我正在使用 Symfony 2.6 和 postgreSQL。

谢谢你:)

将日期格式化为字符串,如下所示:

$date->format('Y-m-d H:i:s')

或者省略日期和时间,因为它是 LIKE 查询

$date->format('Y-m-') . '%'

考虑使用起点和终点之间的日期进行查询:

$nextMonth = clone $date;
$nextMonth->modify('+1 month');

然后你可以做大于或等于第一个日期和小于或等于结束日期

谢谢,这是个好主意。

    $startInterval = \DateTime::createFromFormat('Y-m', $date);
    $endInterval = clone $startInterval;
    $endInterval->modify('+1 month'); 

这样更好!

        ->andWhere('i.createdAt > :startInterval')
        ->andWhere('i.createdAt < :endInterval')
        ->setParameter('startInterval', $startInterval)
        ->setParameter('endInterval', $endInterval)