我在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;
}
附加信息:订单实体有一个客户列,用于引用用户信息。
答案 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")