Introduction
L’ORM Eloquent inclus avec Laravel vous fournit un moyen facile d’interagir avec votre base de données. Cela simplifie toutes les opérations CRUD (Create, read, update, and delete) et toute autre requête de base de données.
Dans certains cas spécifiques, il se peut que vous ne souhaitiez pas obtenir toutes les colonnes d’une table spécifique mais seulement une ou certaines d’entre elles.
Dans ce tutoriel, vous apprendrez comment sélectionner des colonnes spécifiques dans Laravel eloquent!
Sélectionner des colonnes spécifiques avec SQL uniquement
Disons que nous avons une table appelée users avec les colonnes suivantes : name, username, age, email, phone
.
Si vous vouliez obtenir toutes les informations de cette table avec seulement du SQL, la requête ressemblerait à ceci :
SELECT * FROM users WHERE username = 'gekko';
Cependant, si vous vouliez obtenir uniquement, disons, l’âge de l’utilisateur, vous devriez modifier le champ *
par le nom de la colonne :
SELECT age FROM users WHERE username = 'gekko';
Si vous voulez obtenir deux colonnes, vous les divisez par une virgule :
SELECT name,age FROM users WHERE username = 'gekko';
Maintenant que nous savons comment faire cela avec SQL uniquement, apprenons comment nous pouvons réaliser cela avec Laravel.
Sélectionner des colonnes spécifiques avec Laravel Eloquent
Disons que nous avons déjà notre User
en place. Pour obtenir toutes les colonnes du modèle users
nous utiliserons la méthode suivante :
$user = User::where('username', 'gekko')->get();
Cependant, si vous souhaitez obtenir uniquement une colonne spécifique, vous pouvez la passer comme argument à la fonction get()
méthode.
L’argument doit être un contenant une liste des colonnes que vous souhaitez obtenir.:
$user = User::where('username', 'gekko')->get(['name']);
Vous pourriez faire la même chose avec le first()
et all()
ainsi que des méthodes :
$user = User::where('username', 'gekko')->first(['name', 'age']);
Si vous voulez obtenir la valeur d’une seule colonne, vous pouvez utiliser la méthode suivante :
User::where('username', 'gekko')->first(['name'])->name;
Cependant, personnellement, je commencerais par vérifier s’il y a des entrées qui correspondent à la condition. et ensuite obtenir la propriété.