Berechnen Sie das Alter aus dem in der Datenbank in Ymd gespeicherten Datum mit Laravel 5.2
Lesezeit: 4 Minuten
Sanainfotech
Hallo, Benutzer fügen ihr Geburtsdatum über das Formular hinzu, das in der Datenbank gespeichert ist.
Ich möchte das Alter aus dem gespeicherten Datum in der Datenbank berechnen, die in diesem Format Ymd vorliegt,
Meine Frage ist :
Wie berechnet man das Alter?
Wohin mit der Logik, in Controller oder Model?
So übergeben Sie das gespeicherte Datum in diesem Format ‘mdY’
Wie man das Ergebnis der Logik weitergibt, die im Hinblick auf das Alter ist.
Ich verwende etwas wie unten in meinem Modell, ist das richtig?
Dies ist der Controller:
public function index() {
$profile = User::find($this->userid())->profiledetailsHasOne; //This has Dob field
return view('profile.index',['profile' => $profile ]);
}
Das ist mein Modell:
public function getAge(){
$this->birthdate->diff($this->attributes['dob'])
->format('%y years, %m months and %d days');
}
Daten können Instanzen von Carbon sein, das eine Reihe hilfreicher Methoden bietet.
Importieren Sie in Ihrem Modell die Klasse Carbon:
use Carbon\Carbon;
Und definieren Sie einen Accessor:
/**
* Accessor for Age.
*/
public function age()
{
return Carbon::parse($this->attributes['birthdate'])->age;
}
Sie können dann anrufen age als wäre es ein normales Attribut. Zum Beispiel in einer Blade-Ansicht:
<p>{{ $user->age() }} years</p>
Da der Titel “… Laravel 5.2” sagt, könnte es hilfreich sein zu erwähnen, dass diese Methode immer noch mit Laravel 5.6 funktioniert und noch nicht in 5.7 getestet wurde, aber davon ausgegangen wird, dass sie dasselbe tun würde.
– alex t
18. Februar 2019 um 15:53 Uhr
@alext Ich kann bestätigen, dass dies immer noch für Laravel 7.x funktioniert
– Pathos
23. Juni 2020 um 22:18 Uhr
Acessors sind besser definiert als public function getAgeAttribute() und dann müsste man nur anrufen {{ $user->age }}
– sierflibble
10. März um 15:47 Uhr
So zeigen Sie direkt in Ihrer Ansicht:
\Carbon\Carbon::parse($user->birth)->diff(\Carbon\Carbon::now())->format('%y years, %m months and %d days');
Das ist genau das, was ich gesucht habe +1
– hassanrazadev
26. Juni 2020 um 21:24 Uhr
Ich bekomme wie 0 Jahre, 0 Monate und 1 Tage
– CodeGuru
16. September 2020 um 3:48 Uhr
Ich habe diesen Code in meinem Modell hinzugefügt:
protected $appends = ['age'];
public function getAgeAttribute()
{
return Carbon::parse($this->attributes['birthday'])->age;
}
public function age() {
return $this->dob->diffInYears(\Carbon::now());
}
@frvanhove Ich schaffe es auch, das Datumsformat ‘Ymd’ von der Datenbank zu ändern, um das Datum in diesem ‘dmY’ in Sicht zu übergeben. Ich platziere diesen Code in model public function getDOB(){ return $this->dob->format('d-m-Y'); }
– Sanainfotech
20. Februar 2016 um 15:17 Uhr
Ed Ruiz
Die Berechnung des Alters in Laravel erfolgt am besten mit dem Build in Carbon. In Laravel zurückgegebene Daten sind bereits in einem Carbon-Format.
Diese Logik sollte als Standard-Getter für Ihr Modell in das Modell aufgenommen werden.
public function getAge(){
$this->birthdate->diff(Carbon::now())
->format('%y years, %m months and %d days');
}
Daraus ergeben sich „23 Jahre, 6 Monate und 26 Tage“
Angenommen, Sie verwenden Modelle in Ihrer Ansicht und da sollten Sie eine machen getAge() Funktion in diesem Modell.
Sie können Ihr Modell in der Ansicht als aufrufen $user->getAge()
@frvanhove Ich schaffe es auch, das Datumsformat ‘Ymd’ von der Datenbank zu ändern, um das Datum in diesem ‘dmY’ in Sicht zu übergeben. Ich platziere diesen Code in model public function getDOB(){ return $this->dob->format('d-m-Y'); }
– Sanainfotech
20. Februar 2016 um 15:17 Uhr
B. gehen
use App\User;
use Carbon\Carbon;
Route::get('/userage',function(){
$user_info = User::find(1);
// When ( $table->date('birthday'); )
$birthday = $user_info->birthday;
$user_age = Carbon::parse($birthday)->diff(Carbon::now())->format('%y years, %m months and %d days');
echo($user_age);
});
14340400cookie-checkBerechnen Sie das Alter aus dem in der Datenbank in Ymd gespeicherten Datum mit Laravel 5.2yes