2016-03-28 10 views
0

したがって、ユーザーの最終投稿日を取得する必要があります。これを決定するために私が調べる必要があるreceipt_dateのレポートに属している寄与モデルがあります。Laravel 5.2 Eloquent - ユーザーあたり1つのモデルを最大日付で取得

貢献:

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

ので、ここでの考え方は、私は1つの貢献をしたいということです最新の領収書日付で添付されたレポートがあります。しかし、ユーザー1人当たりの寄付は得られますが、レポート関係はすべてのユーザーにとってnullです。

私は間違っていますか?

答えて

0

私はこのようにそれを行うことができることになった:

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

希望これはspecficallyクエリの一部

0

お問い合わせusing ->distinct()をお試しください。

+1

に役立ちますか? –

+0

groupByの後で、get()の前で使用できるはずです。 – MatthewB