Laravel 6

[InfyOM] filtrer des données issus de plusieurs tables pour les afficher dans une DataTable associé à la méthode index d'un controller.

Avatar de Cypang
Cypang

Bonjour à tous,

Je profite de ce premier message pour saluer (et remercier par avance de votre attention) l'ensemble de ce forum francophone.

Après de nombreuses recherche et n'ayant pas trouvé de solution clair je vous expose mon problème :

  1. dans ma base de données ("bidon" pour le sujet) j'ai les tables suivantes :

    • Une table "Personne" avec des champs id, Nom, Nationalite_id [clé étrangère pointant sur la table "Nationalite"']
    • Une table "Nationalite" avec des champs id et Libelle
    • Une table "Sport" avec des champs id et Libelle
    • Une table "Personne_Sport" avec Personne_id + Sport_Id [C'est bien entendu une bonne vieille table composite]
  2. J'utilise le générateur InfyOM pour récupérer le plus rapidement possible tous les composants utiles (controller, dataTable, Models, View , etc...)

  3. Tout va bien lorsque je visualise l'ensemble des données issues de la Base de Données. Par contre lorsque je souhaite filtrer par défaut tel ou tel champ, c'est l'échec assuré !! (exemple : ne faire apparaître que les personnes jouant au Badminton en particulier dans la vue index correspondant à la table Personne, visualiser les sports pratiqués par Robert pour la vue en relation avec la table "Personne_Sport")

J'ai recherché dans divers sites ("anglophone" pour la plupart des cas) et très régulièrement la compréhension et/ou la mise en place des solutions ont échoués par rapport à ma demande qui me semble loin d'être exceptionnelle.

Vous remerciant par avance pour votre aide et vous souhaitant une bonne fin de journée à vous tous.

Avatar de CinquièmeDimension
CinquièmeDimension

Salut à toi l'ami !

D'après ce que j'ai compris (avec ton explication et avec l'aide de https://laravel.sillo.org/infyom/ encore et toujours le même qui donne des bonnes infos) infyOM ca te génère nottement les models et les controllers.

Tu veux donc pouvoir, par exemple:

  • Dans ta page index de personnes (/personnes) qui normalement contien toutes les personnes et toutes les infos associées, n'afficher que les personnes qui ont on un lien avec badminton

Pour ce qui est de la vue en relation avec la page "Personne_Sport" j'ai du mal a me représenter l'utilité de cette page. Pour moi, cette table n'est utilisée que dans les vues en lien avec la table "Personne" ou celle en lien avec la table "Sport" . Une vue relation avec la page "Personne_Sport" n'afficherait qu'un tableau récapitulatif des associations dans leur globalité.

Pour voir les sports pratiqués par Roberts, j'irais plutôt dans sa fiche (un truc comme /personnes/3 , oui, ce vieux Robert à l'ID 3).

Sinon pour mieux y voir pourrais-tu nous donner les model et les controllers de ces 3 tables ?

Avatar de Cypang
Cypang

Bonjour Cinquième Division,

J'ai totalement omis que je souhaitais filtrer les données dès le chargement des tables (imaginons des tables de plusieurs milliers de lignes et que la visibilité des données (quelques dizaines dans la réalité) serait accessible a) uniquement pour les données en relation avec l'utilisateur courant - en l'occurrence la fiche de Robert [table Personne] (sic) et les sports qu'il pratique à l'instant T [Table Personne_Sport] ou b) Toutes les personnes pratiquant un sport DataTables sélectionné en dur dans le lancement du script (cas de figure uniquement pour l'exemple !! puisque dans la réalité on serait plus à même de sélectionner à travers la saisie dynamique du composant JQuery DataTable.

Pour étayer mon problème :

**Les controlleurs ** (extrait) PersonneController : [...]

Vous ne pouvez pas répondre à ce sujet.