Maison > développement back-end > tutoriel php > Comment puis-je récupérer sélectivement des colonnes de tables jointes à l'aide de la fonction « with() » de Laravel Eloquent ?

Comment puis-je récupérer sélectivement des colonnes de tables jointes à l'aide de la fonction « with() » de Laravel Eloquent ?

Patricia Arquette
Libérer: 2024-12-20 05:03:17
original
242 Les gens l'ont consulté

How Can I Selectively Retrieve Columns from Joined Tables Using Laravel Eloquent's `with()` Function?

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>)
Copier après la connexion

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()
Copier après la connexion

Cette modification exécutera les requêtes suivantes :

select * from `posts`
select id, username from `users` where `users`.`id` in (<1>, <2>)
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal