如何在 Doctrine 中仅匹配最后更新的记录?

2024-01-07

我正在使用 Symfony2 和 Doctrine 开发一个应用程序,并且有一个名为status我存储位置和日期簿的位置,例如:

ID  | Book        | Date       | Location
------------------------------------------------
1   | Book_1      | 2011-08-29 | Home
2   | Book_1      | 2011-08-30 | Office
3   | Book_1      | 2011-09-02 | Friend's House
4   | Book_2      | 2011-09-02 | Office
5   | Book_2      | 2011-09-04 | Home

最近日期的状态记录代表current该书的(或最后已知的)位置。在上面的示例中,Book_1 当前位于“朋友之家”,Book_2 位于“家”。

下面的代码得到any在某个时刻具有“Home”位置的记录:

$em = $this->getEntityManager();
$query = $em->createQuery('SELECT s FROM myBookTestBundle:Status s WHERE s.location=:x')->setParameter('x', 'Home');
$status = $query->getResult();

相反,我只想选择那些current位置与“家”匹配。在上面的示例中,记录 ID = 5 (Book_2)。

有什么方法可以使用 DQL 轻松完成此操作吗?

任何帮助是极大的赞赏。

Thanks,
Ralph


另一个问题是:“Doctrine2 的 DQL 可以处理子选择吗?”。

MySQL 的查询将是:

select ID,Book,`Date`,Location 
  from Status a 
  where `Date` = 
    (select max(`Date`) from Status group by Book having Book = a.Book) 
    and Location = 'Home';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Doctrine 中仅匹配最后更新的记录? 的相关文章