繁体   English   中英

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');

希望这可以帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM