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
Patricia Arquetteoriginal
2024-12-20 05:03:17194parcourir

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>)

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!

Déclaration:
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