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
Linda Hamiltonoriginal
2024-12-16 00:41:16925parcourir

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');
}

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');
}

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

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

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!

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