2017-10-31 3 views
0

Ich möchte das Durchschnittsalter der Benutzer berechnen, die ihre Geburtsdaten verwenden. Ich habe eine Model-Klasse namens Member, einschließlich einer Funktion, um das Alter des Benutzers zu erhalten.Wie berechnet man das Durchschnittsalter der Benutzer, die ihre Geburtsdaten verwenden?

<?php 
namespace App; 

use Illuminate\Database\Eloquent\Model; 
use Carbon\Carbon; 

class Member extends Model { 
    public static function averageAge() { 
     //What to do here 
    } 

    public function age() { 
     $birthDate = Carbon::parse($this->birthDate); 
     return $birthDate->diffInYears(Carbon::now()); 
    } 
} 
+2

Also was ist Ihre Definition von 'Mittelalter? –

+3

@MarkBaker 5. bis 15. Jahrhundert? – Strawberry

Antwort

3

Carbon-hat ein Verfahren das „Alter“ ein Datum zu berechnen, so dass Sie dies in Ihrem Modell tun können, statt:

class Member extends Model 
{ 
    protected $casts = [ 
     'birthDate' => 'date', 
    ]; 

    public function getAgeAttribute() 
    { 
     return $this->birthDate->age; 
    } 
} 

Wenn Sie wollen die berechnen Durchschnittsalter von mehreren Mitgliedern, dann würde ich eine Klasse erstellen, die eine Sammlung von Mitgliedern nimmt und diesen Wert zurückgibt:

Welche können Sie dann wie folgt verwenden:

$members = Member::where(...)->get(); 

$averageAge = AverageAge::forMembers($members); 
+0

Vielen Dank sooo. Ich habe eine andere Frage über Datum, die in Form Anfrage kommen, ist es ein Carbon-Objekt oder müssen wir es analysieren? –

+1

@BettyDM Kein Problem! Alles, was in einer Formularanforderung kommt, ist eine Zeichenkette, also müssen Sie es analysieren, wenn Sie eine 'Carbon'-Instanz wollen. –

Verwandte Themen