DQL:仅限客户的最后一个条目

时间:2016-06-02 11:04:17

标签: php symfony query-builder

我在DQL中编写一个查询,我想从客户那里选择最新的订单。目前我只设法获得所有订单,并按降序顺序获取它们的日期。这意味着我需要根据用户进行过滤,以及选择最新的条目。但是,我对DQL和查询的了解并不高,我被困住了。任何有关如何继续我的查询的帮助将不胜感激。

public function getLatestOrder($customer){
    // get the latest order from a customer

    $em = $this->getEntityManager();

    $q1 = $em->getRepository('AppBundle:Order')->createQueryBuilder('o')
    ->leftjoin("AppBundle:User", "u")
    ->where("u.id = :customer_user_id")
    ->setParameter('customer_user_id', $customer)
    ->orderBy('o.date', 'DESC' );

    $q1 = $q1->getQuery();
    $res1 = $q1->getResult();



    return $res1;       
}

附加信息:订单实体有一个客户列,用于引用用户信息。

2 个答案:

答案 0 :(得分:0)

您可以使用子查询,而不是更好地加入。

答案 1 :(得分:0)

你可以试试这个:

$em->getRepository('AppBundle:Order')->createQueryBuilder('o')
->leftjoin("AppBundle:User", "u")
->leftjoin("AppBundle:Order", "laterOrder", 'WITH', 'laterOrder.date > o.date')
->where("u.id = :customer_user_id")
->andWhere("laterOrder is null")