disons que j'ai 7 colonnes dans le tableau, et je veux en sélectionner seulement deux, quelque chose comme ça
SELECT `name`,`surname` FROM `table` WHERE `id` = '1';
Dans le modèle éloquent de laravel, cela peut ressembler à ceci
Table::where('id', 1)->get();
mais je suppose que cette expression sélectionnera TOUTES les colonnes où id est égal à 1, et je ne veux que deux colonnes (nom, prénom). comment sélectionner seulement deux colonnes?
Réponses:
Vous pouvez le faire comme ceci:
la source
SELECT name, surname FROM Table where id = 1
requête SQLla source
En utilisant la méthode all (), nous pouvons sélectionner des colonnes particulières dans le tableau comme indiqué ci-dessous.
Remarque : Laravel 5.4
la source
Vous pouvez aussi utiliser
find()
comme ceci:La
$id
variable peut être un tableau au cas où vous auriez besoin de récupérer plusieurs instances du modèle.la source
De plus,
Model::all(['id'])->toArray()
il ne récupérera l'identifiant que sous forme de tableau.la source
Vous devez d'abord créer un modèle, qui représente cette table, puis utiliser la méthode éloquente ci-dessous pour récupérer les données de seulement 2 champs.
la source
Vous pouvez utiliser get () ainsi que all ()
la source
Vous pouvez également utiliser du pincement.
la source
pluck()
c'est moins efficace que les autres méthodes décrites car cela ne modifie pas laSELECT ...
requête, mais plutôt, il fonctionne sur le jeu de résultats déjà renvoyé.Obtenez la valeur d'une colonne:
Même vous pouvez utiliser cette méthode avec la clause where:
dans le générateur de requêtes:
avec où cluase:
ou
le dernier résultat de la méthode est un tableau
la source
Vous pouvez utiliser
Table::select ('name', 'surname')->where ('id', 1)->get ()
.Gardez à l'esprit que lorsque vous sélectionnez uniquement certains champs, vous devrez effectuer une autre requête si vous finissez par accéder à ces autres champs plus tard dans la demande (cela peut être évident, je voulais simplement inclure cette mise en garde). L'inclusion du champ id est généralement une bonne idée afin que laravel sache comment réécrire toutes les mises à jour que vous effectuez sur l'instance de modèle.
la source
À partir de laravel 5.3 en utilisant uniquement la
get()
méthode, vous pouvez obtenir des colonnes spécifiques de votre table:Ou à partir de laravel 5.4, vous pouvez également utiliser la
all()
méthode pour obtenir les champs de votre choix:avec les deux méthodes ci-dessus
get()
ouall()
vous pouvez également utiliserwhere()
mais la syntaxe est différente pour les deux:Modèle :: all ()
Modèle :: get ()
la source
Pour obtenir le résultat d'une colonne spécifique à partir de la table, nous devons spécifier le nom de la colonne.
Utilisez le code suivant: -
par exemple -
la source
Bien que l'approche la plus courante soit l'utilisation
Model::select
, elle peut entraîner le rendu de tous les attributs définis avec des méthodes d'accesseur dans les classes de modèle. Donc, si vous définissez un attribut dans votre modèle:Et puis utilisez:
TableName::select('username')->where('id', 1)->get();
Il affichera la collection avec les deux
first_name
etusername
, plutôt que le seul nom d'utilisateur.Meilleure utilisation
pluck()
, en solo ou éventuellement en combinaison avecselect
- si vous voulez des colonnes spécifiques.TableName::select('username')->where('id', 1)->pluck('username');
ou
TableName::where('id', 1)->pluck('username');
// qui renverrait une collection composée uniquement deusername
valeursÉgalement, éventuellement, utiliser
->toArray()
pour convertir l'objet de collection en tableau.la source
->get()
un peu comme->all()
(et->first()
etc.) peut prendre les champs que vous voulez ramener comme paramètres;->get/all(['column1','column2'])
Je ramènerais la collection mais seulement avec
column1
etcolumn2
la source
vous pouvez également utiliser la
findOrFail()
méthode ici, il est bon d'utiliserla source
Si vous souhaitez obtenir une seule ligne et à partir de la colonne unique de cette ligne, un code de ligne pour obtenir la valeur de la colonne spécifique est d'utiliser
find()
méthode en plus de spécifier la colonne que vous souhaitez récupérer.Voici un exemple de code:
la source
Vous pouvez utiliser la requête ci-dessous:
la source
utilisez App \ Table; ... Table :: where ('id', 1) -> get ('nom', 'nom');
sinon où
Table :: all ('nom', 'nom');
la source