Php 在Laravel 5.4中按备选方案分组

Php 在Laravel 5.4中按备选方案分组,php,mysql,laravel,eloquent,laravel-5.4,Php,Mysql,Laravel,Eloquent,Laravel 5.4,我有一个表时间表,有3列(id、参考号、付款日期)。每个参考号每个月都有一个付款日期。所以这个表看起来像这样: id | ref_number | pay_date ----------------------------- 1 | A001 | 2018-06-29 1 | A001 | 2018-07-29 1 | A002 | 2018-06-30 1 | A002 | 2018-07-30 1 | A002 | 201

我有一个表时间表,有3列(id、参考号、付款日期)。每个参考号每个月都有一个付款日期。所以这个表看起来像这样:

id | ref_number | pay_date
-----------------------------
1  | A001       | 2018-06-29
1  | A001       | 2018-07-29
1  | A002       | 2018-06-30
1  | A002       | 2018-07-30
1  | A002       | 2018-08-30
1  | A003       | 2018-06-29
我只想获取每个参考号的最早记录,这些参考号的付款日期介于今天和某个日期之间(从今天起30或31天)。下面的查询在Mysql中运行良好(稍后我将动态传递日期)

我知道我们可以在数据库配置文件中将mysql的“strict”改为false,并且Group By的行为将如预期的那样,但是不必改变这一点,还有其他方法解决这个问题吗


对于这个问题,有说服力的等价物是什么?有没有groupby。

在搜索了一段时间后,我使用嵌套的select语句找到了一个答案,并在Laravel中进行了尝试。它完全符合我的要求。下面是一段美妙的代码:

Schedule::select(DB::raw(id, ref_number, MIN(pay_date) as pay_date))
          ->from(DB::raw("(SELECT * 
                       FROM schedule 
                       WHERE (pay_date > CURDATE())) 
                       temp")
                      )
          ->groupBy('temp.ref_number')
          ->get();
Schedule::select(DB::raw(id, ref_number, MIN(pay_date) as pay_date))
          ->from(DB::raw("(SELECT * 
                       FROM schedule 
                       WHERE (pay_date > CURDATE())) 
                       temp")
                      )
          ->groupBy('temp.ref_number')
          ->get();