我想执行以下查询:
$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;
...
}
但是按顺序排序不起作用。 我的结果没有按开始日期显示。
我想检索从最近到最新的前20个事件。
我该怎么做?
谢谢
编辑:
根据之前的答案,我更新了我的查询。 不幸的是,我仍然不能让它工作。 请帮忙。
$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 );
谢谢
编辑2: 移动orderBy似乎确实有所不同。目前为止,我没有任何错误。脚本使用orderBy运行良好,但根本没有按照日期时间排序!
在我的结果中,我看不到任何让我认为它是基于任何给定属性排序的东西,绝对不是日期时间!
这怎么可能?
Datetime字段在数据库中看起来像这样: 2014-05-24 19:30:00
当我var Dump之前的查询时,这是我对datetie字段的理解:
["dateStart"]=> string(8) "DateTime"
这是否意味着对于教条来说,它实际上是一个字符串,因此不按日期时间排序?
谢谢
andX()
,因为您只有一个表达式。如果不是,请向我们展示确切的查询。我们需要知道是否有JOIN子句,或者您是否正在使用Doctrine Paginator等等... - Jasper N. Brouwer