Laravel 5

Affichage de données

  • Avatar de RyanKeli
    Membre depuis :
    11/04/2017
    Messages :
    33

    Bonjour la communauté Laravel,

    J'aimerais savoir comment afficher les données dans une relation hasOne.
    Je vous donne un exemple :

    Personne(id, nom, prenom)
    Adresse(id, ville, commune, rue, telephone)

    class Personne extends Model {

    public adresse()
    {
    return $this->belongsTo(Personne::class);
    }

    }

    class Adresse extends Model {

    public personne()
    {
    return $this->hasOne(Personne::class);
    }

    }

    Dans le controller, on a :

    $personne = Personne::with('adresse')->get();

    Ma préoccupation se trouve au niveau de l'affichage dans la vue en faisant :

    @foreach ($personne as $perso)
    {{ $perso->nom }} {{ $perso->prenom }}
    @foreach ($personne->adresse as $add)
    {{ $add->ville }}, {{ $add->commune }} {{ $add->rue }}, {{ $add->telephone }}
    @endforeach
    @endforeach

    Mais cela génère des erreurs et je n'ai pas l'affichage souhaité. Aidez moi svp.

    Merci, cordialement.

  • Avatar de lavarelkyi
    Membre depuis :
    20/12/2017
    Messages :
    85

    Salut,

    Quelle est l'erreur générée ??

  • Avatar de RyanKeli
    Membre depuis :
    11/04/2017
    Messages :
    33

    Merci pour votre attention,

    Voici l'erreur générée : Invalid argument supplied for foreach()

  • Avatar de lavarelkyi
    Membre depuis :
    20/12/2017
    Messages :
    85

    Salut

    tu as oublier le function,
    et le code c'est plutot comme ceci

    ``
    public function adresse()

    {

    return $this->belongsTo(Personne::class);

    }
    ``

    Je tiens égalment à préciser qu'il n'y a rien qui di qu'ils sont en relations tous les deux

  • Avatar de RyanKeli
    Membre depuis :
    11/04/2017
    Messages :
    33

    Salut,

    Si les differentes fonctions dans les classes montrent que les modèles sont en relation.

  • Avatar de lavarelkyi
    Membre depuis :
    20/12/2017
    Messages :
    85

    Salut,

    Ce message d'erreur s'affiche parce que ta variable $personne->adresse est vide

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

    Vous ne devriez pas plutôt boucler sur la variable $perso et non pas $personne ?

    @foreach ($personne as $perso)

    @foreach ($perso->adresse as $add)
    , ,
    @endforeach
    @endforeach
  • Avatar de RyanKeli
    Membre depuis :
    11/04/2017
    Messages :
    33

    Salut,

    vous avez raison MaitrePylos, c'est une erreur de frappe de ma part. En réalité, c'est ce que j'ai fait mais je me dis qu'étant donné que c'est une relation hasOne, on ne pourrait pas faire de foreach dessus puisqu'on a une seule donnée. Alors je cherche la bonne méthode pour récupérer les données.
    Note : ça marche correctement dans le cas d'une relation hasMany.

    Merci. Cordialement.

Vous ne pouvez pas répondre à ce sujet.