Maison > développement back-end > tutoriel php > Comment sélectionner des colonnes spécifiques dans la fonction éloquente « with() » de Laravel ?

Comment sélectionner des colonnes spécifiques dans la fonction éloquente « with() » de Laravel ?

Linda Hamilton
Libérer: 2024-12-16 00:41:16
original
924 Les gens l'ont consulté

How to Select Specific Columns in Laravel's Eloquent `with()` Function?

Spécification de colonnes spécifiques dans la fonction "With()" d'Eloquent

Lors de l'utilisation de la fonction "with()" dans l'ORM Eloquent de Laravel pour récupérer les données associées à partir de plusieurs tables, vous pouvez rencontrer des situations dans lesquelles vous n'avez besoin que de colonnes spécifiques de la deuxième table. Cet article explique comment y parvenir sans recourir au générateur de requêtes.

Considérez le scénario dans lequel vous disposez de deux tables, « Utilisateur » et « Post », avec une relation un-à-plusieurs entre elles. Dans votre modèle User, vous définissez une relation "hasMany" avec le modèle Post :

public function post()
{
    return $this->hasmany('post');
}
Copier après la connexion

De même, dans le modèle Post, vous établissez une relation "belongsTo" avec le modèle User :

public function user()
{
    return $this->belongsTo('user');
}
Copier après la connexion

Cependant, lorsque vous utilisez la fonction "with()" pour joindre ces deux tables, vous remarquerez peut-être qu'elle sélectionne toutes les colonnes de la deuxième table par défaut. Supposons que vous souhaitiez uniquement récupérer des colonnes spécifiques, telles que « id » et « username », de la table « User ». L'extrait de code suivant ne suffira pas :

Post::query()
    ->with('user')
    ->get();
Copier après la connexion

Pour atteindre votre objectif, vous pouvez passer une fonction de fermeture comme deuxième index du tableau passé à la fonction "with()" :

Post::query()
    ->with(['user' => function ($query) {
        $query->select('id', 'username');
    }])
    ->get()
Copier après la connexion

Cette fermeture permet de préciser quelles colonnes récupérer de la deuxième table. Dans ce cas, il sélectionnera uniquement les colonnes "id" et "username" de la table "User".

Remarque : Comme mentionné dans la réponse, la clé primaire ("id " dans ce cas) doit être le premier paramètre de la méthode $query->select() pour garantir une récupération correcte des résultats.

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