[英]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.