2014-04-01 121 views
0

我需要返回ID 3和4,因为它是每个类别的最新值。 我该怎么办?Symfony和Doctrine查询

$query = $repository->createQueryBuilder('p'); 
    $query->select('l'); 
    $query->groupBy('p.category'); 
    $query->orderBy('p.data', 'DESC'); 

使用此代码1和2被返回。

样本数据:

ID | Name | Category | Data 

1 |A  |1  |2014-01-01 

2 |B  |2  |2014-01-01 

3 |C  |1  |2014-01-03 

4 |D  |2  |2014-01-05 

回答

-1

你好user3483478,

我想你是在这里失去了一个简单的因素,请尝试更换与你的SELECT语句 'P' 'L'。并将SQL LIMIT设置为2,在Doctrine 2中,它是'setMaxResults',因为您只需要检索2行。这可以轻松完成,不需要使用子查询。

$query = $repository->createQueryBuilder('p'); 
$query->select('p'); 
$query->groupBy('p.category'); 
$query->orderBy('p.data', 'DESC') 
$query->setMaxResults(2); 

希望这有助于

干杯!

+0

的正确性,如果类别将两个以上的 – DonCallisto

+0

哦,我错过了这将不是这个,感谢您指出:) –

0
$query = $repository->createQueryBuilder('p'); 
$query->select('p, MAX(p.ID)'); 
$query->groupBy('p.category'); 
$query->orderBy('p.data', 'DESC') 

这里sqlfiddle能够证明查询