2016-03-28 8 views
0

So muss ich das letzte Beitragsdatum für einen Benutzer abrufen. Es gibt ein Beitragsmodell, das zu einem Bericht gehört, der eine receipt_date hat, die ich betrachten muss, um dies zu bestimmen.Laravel 5.2 Eloquent - Holen Sie sich nur ein Modell pro Benutzer nach maximalem Datum

Beitrag:

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

Bericht:

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

Dies ist, was ich zu tun versuche:

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

So, hier ist die Idee, dass ich einen Beitrag wollen Diesem Bericht ist ein Bericht mit dem letzten Empfangsdatum beigefügt. Allerdings bekomme ich pro Benutzer einen Beitrag, aber die Berichtsbeziehung ist für alle null.

Was mache ich falsch?

Antwort

0

landete ich in der Lage, es auf diese Weise zu tun:

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

hoffe, das hilft

0

Versuchen Sie using ->distinct() in der Abfrage.

+1

, welcher Teil der Abfrage specfically? –

+0

Sollte in der Lage sein, es zu verwenden, nach der groupBy aber vor dem get() – MatthewB

Verwandte Themen