Récupération sélective de colonnes avec la fonction "With()" dans Laravel Eloquent
Une exigence courante lorsque l'on travaille avec des modèles Eloquent est la nécessité de rejoindre plusieurs tables et récupérer des colonnes spécifiques des tables jointes. Bien que la fonction "with()" offre un moyen pratique de spécifier des relations, elle récupère initialement toutes les colonnes des tables associées.
Dans l'exemple fourni, l'objectif est de récupérer des colonnes spécifiques (identifiant et nom d'utilisateur) du table "users" en utilisant "with()" pour la joindre à la table "posts". L'implémentation initiale récupère toutes les colonnes des deux tables, ce qui entraîne les requêtes suivantes :
select * from `posts` select * from `users` where `users`.`id` in (<1>, <2>)
Pour récupérer uniquement les colonnes souhaitées de la table jointe, une fonction de fermeture peut être transmise comme deuxième paramètre à "with( )" comme suit :
Post::query() ->with(['user' => function ($query) { $query->select('id', 'username'); }]) ->get()
Cette modification exécutera les requêtes suivantes :
select * from `posts` select id, username from `users` where `users`.`id` in (<1>, <2>)
Cette approche garantit que seules les colonnes spécifiées sont récupéré de la table jointe tout en utilisant la fonction "with()" pour la jointure de relation.
Remarque importante :
Il est crucial d'inclure la clé primaire (id dans ce case) comme premier paramètre dans $query->select() dans la fonction de fermeture. Ceci est nécessaire pour récupérer correctement les résultats de la table jointe.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!