学说|查询生成器-如何获取其他列上具有相同值的行的列上的最大值

时间:2018-07-24 08:54:10

标签: php symfony orm doctrine query-builder

我是一家房地产租赁公司的实习生。我负责在Symfony下开发CRM。

我们需要注册每个属性的可用性,以便与AirBnB等平台进行沟通并预定日期。出于历史原因,我选择每天最多保留两个可用性。

这是表的结构和一些数据: availabilities.sql

现在,我需要将仅最新修改(创建)的可用性发送到平台。

所以我现在面临的问题是,我可以通过比较来获取最大值,但是如果date_availabilities只有一行,那么我就没有这一天的可用性,因为没有比较。

这是我的查询生成器。

     // Loads Availabilities
    $qb = $this->getEntityManager()->getRepository(Availabilities::class)->createQueryBuilder('a')

        // Get Availabilities for a property
        ->where('a.idProperties = :id')
        ->andwhere('a.dateAvailabilities BETWEEN :from AND :to')
        ->setParameters(array(
            'id'    =>  $id,
            'from'  =>  $from,
            'to'    =>  $to
        ));

    // Prepares subquery
    $subqb = $qb;
    $subqb
        ->select('s')
        ->from('LDPlatformBundle:Availabilities', 's');

    $qb
        ->andWhere('a.idProperties = s.idProperties')
        ->andWhere('a.dateAvailabilities = s.dateAvailabilities')

        // Get only the lastest registered Availabilities
        ->andWhere('s.dateModifAvailabilities > a.dateModifAvailabilities')

    dump($availabilities = $qb->getQuery()->getArrayResult());
    die();
    return;

我知道堆栈溢出一定是最后的选择,但是我必须找到昨天的解决方案,而我在SQL方面的实验还不够。我尝试了很多组合,但失败了。

非常感谢能帮助我的人。

0 个答案:

没有答案