Laravel 5.2 Eloquent - 每个用户在最大日期之前只获得一个模型

Laravel 5.2 Eloquent - Get only one model per user by max date

所以我需要获取用户的最后贡献日期。有一个属于报告的贡献模型,该报告具有 receipt_date,这是我需要查看以确定的内容。

贡献:

class Contribution extends Base
{   
    // Belongs To -----
    public function report()
    {
        return $this->belongsTo('App\Models\Remittance\Report', 'report_number_id');
    }
}

报告:

class Report extends Base
{
    // Has Many -----
    public function contributions() {
        return $this->hasMany('App\Models\Remittance\Contribution', 'report_number_id');
    }
}

这就是我正在尝试做的事情:

(new App\Models\Remittance\Contribution)->select(['vip_id', 'report_number_id']) ->with(['report' => function($query) { $query->select(DB::raw('max(receipt_date)')); }]) ->whereIn('vip_id', $vipIds)->groupBy('vip_id')->get();

所以这里的想法是,我想要一份附有报告和最新接收日期的捐款。然而,我得到了每个用户的贡献,但所有这些人的报告关系都是空的。

我做错了什么?

在查询中尝试 using ->distinct()

我最终能够这样做:

(new App\Models\Remittance\Report)->select(DB::raw('max(receipt_date) as lastReceiptDate, cr_member_transaction.vip_id'))
            ->join('cr_member_transaction', 'cr_report_transaction.report_number_id', '=', 'cr_member_transaction.report_number_id')
            ->whereIN('cr_member_transaction.vip_id', $vipIds)
            ->groupBy('cr_member_transaction.vip_id')->get()->lists('lastReceiptDate', 'vip_id');

希望对您有所帮助