Laravel 5

Eloquent requete

  • Avatar de drefusjunior
    Membre depuis :
    23/08/2017
    Messages :
    29

    salut,
    quelqu'un peut me convertir cette requête

    $villes=Ville::all();//je veux le nom
    $pay=Pays::all();//je veux le nom aussi

    je souhaite une requete qui vas joindre les deux pour avoir une seule variable en leux et place de deux variables.
    Oubien ya t'il une possible d'utilisé les deux variable dans une meme vue. Si oui laquelle ?

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

    Salut,

    La question n'est pas vraiment claire, enfin personnellement je ne la comprends pas...

  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    83

    en faite j'ai deux model ville et pays.
    pays qui regroupe les infos sur les pays et ville pour les infos des villes.
    Etant donnée la relation entre pays et ville c'est à dire pays hasMany ville et ville belongsTo pays.
    J'ai fais migré une clé étrangère dans la table ville qui est pays_id qui me permettre de savoir la ville appartient à quel pays.
    Maintenant dans ma vue qui devras lister les villes, je souhaite affiché aussi le nom des ville et le nom des pays
    donc j'ai voulu recupérer a partir d'une requête qui vas prendre dans la table ville son = nom, id puis dans pays = nom, id.
    ensuite dans ma vue je l'afficherai après avoir faire ma boucle foreach.
    comme je savais pas comment le faire donc jai créé ses deux variables pour stocker dans chacune les infos et envoyé à la vu avec un compact, mais le problème avec sa est que je ne peux pas faire deux fois la boucle foreach.
    illustration de ma vue:
    VilleController

    public function listes_ville()
    {
    $villes=Ville::all();
    $pay=Pays::all();
    return view('admins/villes-listes', compact(['villes', 'pay']));
    }

    Villes-listes.blade.php

    <tbody>
    @foreach($villes as $ville)
    <tr><td>1</td>
    <td>{{ $ville->name }}</td>
    <td>{{ $ville->id_pays }}</td>//c'est ici que je souhaite afficher le nom du pays qui proviens de la variable $pays
    <td>
    <div class="collapse navbar-collapse pull-left" id="navbar-collapse">
    <ul class="nav navbar-nav">
    <li class="dropdown">
    <a href="#" class="dropdown-toggle" data-toggle="dropdown">Action<span class="caret"></span></a>
    <ul class="dropdown-menu" role="menu">
    <li class="active"><a href="{{ route('admin_ville') }}">Ajouter un nouveau pays</a></li>
    <li><a href="{{ route('modifier_ville_get', [$ville->id]) }}">Modifier</a>
    <li class=""><a href="{{ route('supprimer_ville', [$ville->id]) }}">Supprimer le pays</a></li>
    </li>
    </ul>
    </li>
    </ul>
    </div>
    </td></tr>
    @endforeach
    </tbody>
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Ah cette fois j'ai compris !

    Il faut utiliser la relation :

    $pays = App\Pays::with('villes')->get();

    Ensuite il suffit de boucler :

    foreach ($pays as $p) {
    echo $p->name;
    foreach ($p->villes as $ville) {
    echo $ville->name;
    }
    }
  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    83

    Merci Bestmomo. par rapport à cette relation j'ai mis mes Model dans un dossier model donc je les appels comme ceci

    use App\Model\NomModel;

    après avoir mis la relation que tu m'a donné mais on me dis ceci:

    (1/1) FatalErrorException
    Class 'App\Ville' not found
  • Avatar de bestmomo
    Membre depuis :
    07/04/2013
    Messages :
    1644

    Salut,

    Je pense que dans la relation tu as mis App\Ville à la place de App\Models\Ville.

  • Avatar de watsonweb
    Membre depuis :
    08/02/2017
    Messages :
    83

    Merci beaucoup Bestmomo vous êtes en quelques sorte mon coatch car j'apprend toujours grâce à vous. Merci encore. La question de @drefus a été utilie pour moi

Vous ne pouvez pas répondre à ce sujet.