Laravel 5

Age des utilisateurs

  • Avatar de WilliamMaquin
    Membre depuis :
    02/12/2018
    Messages :
    45

    Hello la commu ! J'avance pas mal dans mon projet, et j'ai une question.

    J'ai ajouté un panel utilisateur dans mon site et je voudrais que le site affiche l'âge de la personne en fonction de sa date de naissance.

    J'ai déjà la table dans la base de donnée pour la date de naissance mais je ne sais pas comment afficher par exemple 25 ans pour une date de naissance le 30-05-1993. Voilà voilà

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2355
  • Avatar de WilliamMaquin
    Membre depuis :
    02/12/2018
    Messages :
    45

    Dac sauf que je comprends rien a la doc de carbon :/

  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    2355

    Il y a eu pas mal de discussions sur le sujet, par exemple celle-ci.

  • Avatar de MaitrePylos
    Membre depuis :
    27/05/2013
    Messages :
    242

    Disons que la table s'appelle "membre" que le champs date s'appelle 'date_naissance'.

    alors ceci devrais fonctionner

    dans le fichier model membre, on definit le champs date_naissance comme mutator de Carbon

    dates = ['date_naissance'];

    doc ici : https://laravel.com/docs/5.7/eloquent-mutators#date-mutators

    ensuite dans le controller :

    $membre = Membre::find(1);

    $membre->date_naissance->age

    Simple et efficace

  • Avatar de MakoubaSetho
    Membre depuis :
    16/10/2017
    Messages :
    15

    Oserais-je ajouté une solution purement PHP .. ?

    <?php
    use DateTime; //Libraires DateTime
    use DateInterval; //Libraires DateInterval, pour les formats

    $currentDate = new DateTime(); //Date actuelle format DateTime
    $bornDate = new DateTime($membre->date_naissance); //Date de naissance format EN depuis la BDD, dans un DateTime

    //On compare les 2 dates :
    $age = date_diff($currentDate, $bornDate)->format('%y'); //Format '%y' = seulement les années séparant les 2 dates
    ?>

Vous ne pouvez pas répondre à ce sujet.