我正在寻找执行以下查询:
$qb = $this->getEntityManager()->createQueryBuilder();
$qb->select( 'e' )
->from( 'Entity\Event', 'e' )
->setMaxResults( $limit )
->setFirstResult( $offset )
->orderBy('e.dateStart', 'ASC');
$events = $qb->getQuery()->getResult();
Where
/**
* User
*
* @ORM\Table(name="event")
* @ORM\Entity(repositoryClass="Repositories\EventRepository")
*/
class Event
{
/**
* @var \DateTime
*
* @ORM\Column(name="date_start", type="datetime", precision=0, scale=0, nullable=true, unique=false)
*/
private $dateStart;
...
}
但 order by 不起作用。
我的结果未按开始日期显示。
我正在寻找从最早到最近发生的 20 个事件
我怎样才能做到这一点 ?
Thanks
EDIT:
根据之前的回答,我正在更新我的查询。
不幸的是我仍然无法让它工作。
请帮忙
$qb->select( 'e' )
->from( 'Entity\Event', 'e' )
->Where(
$qb->expr()->andX(
$qb->expr()->between('e.dateStart', ':from', ':to')
)
)
->orderBy('e.dateStart', 'ASC')
->setFirstResult( $offset )
->setMaxResults( $limit );
Thanks
编辑2:
看来移动 orderBy 确实有所作为。我现在没有任何错误。该脚本使用 orderBy 运行良好,但它根本不按日期时间排序!
在我的结果中,我看不到任何让我认为它是根据任何给定属性进行排序的内容,绝对不是 datetime !
这怎么可能?
日期时间字段看起来像数据库中的那样:
2014-05-24 19:30:00
当我 var Dump 前一个查询产生的查询时,以下是 datetie 字段的内容:
["dateStart"]=> string(8) "DateTime"
这是否意味着它确实是一个教义字符串,这就是为什么它不按 datetime 排序的原因?
Thanks