Laravel 5

Requête concernant des tables de relation 1:1 et N:N.

  • Avatar de Pakito
    Membre depuis :
    07/02/2019
    Messages :
    8

    Bonsoir,

    Pour faire simple, je souhaite lister un ensemble de tâche contenant des données de ralation 1:1 (ça, ça fonctionne) et des données de relations N:N (ça, j'y travail...), en fonction d'un "ID" de positionnement.

    Modele de données :
    Modele de donnees

    Une tâche peut avoir un et un seul : état, frequence et positionnement.
    Une tâche peut avoir un ou plusieurs : postes, executants.

    Lien vers l'image : Modèle

    Sur Laravel, dans une page tache.index.blade.php, j'ai une barre de navigation d'onglets en horizontale qui affiche pour chacune d'entre elle un tableau datatable Bootstrap listant les tâches d'un positionnement donné.

    Il y a 9 positionnements dans la table positionnements donc 9 onglets (1 tableau différent qui s'affichera en fonction de l'onglet selectionné).

    • Ainsi, pour l'onglet 1 je souhaite afficher :

      Les tâches contenant leur frequence, leur etat, leur positionnement ainsi que les executants et les postes qui concernent ces tâches, dont l'ID de positionnement = 1.

    • Pour l'onglet 2 :

      Les tâches contenant leur frequence, leur etat, leur positionnement ainsi que les executants et les postes qui concernent ces tâches, dont l'ID de positionnement = 2.

    Et ainsi de suite.

    Jusqu'ici, j'effectuait des requête simple pour récupérer sur mes vues des tableaux contenant des tâches avec leur fréquence, leur etat et leur positionnement. En gros, toutes les relations 1:1.

    Je souhaiterai avoir toutes les données concernant chaque tâche pour chacun des positionnement donné mais j'avoue m'y perdre un peu. Je vois mal comment récupérer toutes ces données sur ma vue tache.index en sachant qu'il peut y avoir plusieurs executants ou postes associés à une tâche pour un positionnement donné.

    Si jamais vous pensez pouvoir m'aider ou me diriger vers un cours/tuto approprié, sachez que la moindre petite aide me sera d'une grande utilité.

    (PS : Je débute sur Laravel, je vous ferai parvenir des screens de l'index si vous le souhaitez.)

    Merci d'avance.

    Bonne soirée et à bientôt peut être :)

  • Avatar de Pakito
    Membre depuis :
    07/02/2019
    Messages :
    8

    Voici le model Tache :

    namespace App\Models;

    use Illuminate\Database\Eloquent\Model;

    class Tache extends Model
    {

    protected $table = 'taches';
    public $timestamps = true;
    protected $fillable = array('libelle', 'description', 'infosComp', 'dateLimite', 'avantOuApres', 'positionnement_id', 'etat_id', 'frequence_id');

    protected $casts = [
    'avantOuApres' => 'boolean',
    ];

    public function positionnement()
    {
    return $this->belongsTo('App\Models\PositionnementExecution');
    }

    public function frequence()
    {
    return $this->belongsTo('App\Models\Frequence');
    }

    public function etat()
    {
    return $this->belongsTo('App\Models\Etat');
    }

    public function executants()
    {
    return $this->belongsToMany('App\Models\Executant');
    }

    public function postes()
    {
    return $this->belongsToMany('App\Models\Poste');
    }
    }
  • Avatar de Pakito
    Membre depuis :
    07/02/2019
    Messages :
    8

    Résolu :

    Controller :

    $data = Tache::with('frequence', 'etat', 'positionnement', 'executants', 'postes')->get();

    Index :

    [...]

    @foreach ($data as $tache)
    <td>{{$tache->id}}<td>
    <td>{{$tache->libelle</td>
    @foreach($tache->executants as $executant)
    <td>{{ $executant->nom }}<td>
    @endforeach
    [...]
    @endforeach

Vous ne pouvez pas répondre à ce sujet.