disons que j'ai 7 colonnes dans la table, et je veux n'en sélectionner que 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 que je ne veux que deux colonnes (nom, prénom). Comment ne sélectionner que deux colonnes?
Vous pouvez le faire comme ça:
Table::select('name','surname')->where('id', 1)->get();
Table::where('id', 1)->get(['name','surname']);
En utilisant la méthode all (), nous pouvons sélectionner des colonnes particulières dans un tableau, comme indiqué ci-dessous.
ModelName::all('column1', 'column2', 'column3');
Note : Laravel 5.4
De plus, Model::all(['id'])->toArray()
ne récupérera l’identifiant que sous forme de tableau.
Vous devez d’abord créer un modèle, qui représente cette table, puis utiliser la méthode Eloquent ci-dessous pour extraire les données de deux champs seulement.
Model::where('id', 1)
->pluck('name', 'surname')
->all();
Vous pouvez également utiliser find()
comme ceci:
ModelName::find($id, ['name', 'surname']);
La variable $id
peut être un tableau au cas où vous auriez besoin de récupérer plusieurs instances du modèle.
Vous pouvez utiliser get () ainsi que all ()
ModelName::where('a', 1)->get(['column1','column2']);
Utilisez le code suivant: -
$result = DB::Table('table_name')->select('column1','column2')->where('id',1)->get();
Bien que l'approche la plus courante consiste à utiliser Model::select
, cela peut entraîner le rendu de tous les attributs définis avec des méthodes d'accès dans les classes de modèle. Donc, si vous définissez attribut dans votre modèle:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* Get the user's first name.
*
* @param string $value
* @return string
*/
public function getFirstNameAttribute($value)
{
return ucfirst($value);
}
}
Et ensuite, utilisez: TableName::select('username')->where('id', 1)->get();
Il va sortir une collection avec first_name
et username
, plutôt que seulement un nom d'utilisateur.
Mieux vaut utiliser pluck()
, en solo ou éventuellement en combinaison avec select
- si vous souhaitez 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 de username
valeurs
Vous pouvez également utiliser ->toArray()
pour convertir un objet de collection en tableau.
Vous pouvez utiliser Table::select ('name', 'surname')->where ('id', 1)->get ()
.
N'oubliez pas que lors de la sélection de certains champs uniquement, vous devrez effectuer une autre requête si vous souhaitez accéder à ces autres champs ultérieurement dans la demande (cela peut être évident si vous souhaitez simplement inclure cette mise en garde). L'inclusion du champ id est généralement une bonne idée. Par conséquent, Laravel sait comment écrire toutes les mises à jour apportées à l'instance du modèle.
Aussi, vous pouvez utiliser le plumer.
Model::where('id',1)->pluck('column1', 'column2');
De laravel 5.3 uniquement avec la méthode get()
, vous pouvez obtenir des colonnes spécifiques de votre tableau:
YouModelName::get(['id', 'name']);
Ou à partir de laravel 5.4, vous pouvez également utiliser la méthode all()
pour obtenir les champs de votre choix:
YourModelName::all('id', 'name');
avec les deux méthodes ci-dessus get()
ou all()
, vous pouvez également utiliser where()
, mais la syntaxe est différente pour les deux:
Model :: all ()
YourModelName::all('id', 'name')->where('id',1);
Model :: get ()
YourModelName::where('id',1)->get(['id', 'name']);
Vous pouvez utiliser la requête ci-dessous:
Table('table')->select('name','surname')->where('id',1)->get();
vous pouvez aussi utiliser findOrFail()
method here c'est bien d'utiliser
si l'exception n'est pas interceptée, une réponse HTTP 404 est automatiquement renvoyée à l'utilisateur. Il n'est pas nécessaire d'écrire des vérifications explicites pour renvoyer 404 réponses lorsque cette méthode ne donne pas une erreur 500.
ModelName::findOrFail($id, ['firstName', 'lastName']);
Si vous souhaitez obtenir une ligne et une colonne à la fois, un code de ligne pour obtenir la valeur de la colonne spécifique consiste à utiliser la méthode find()
en spécifiant la colonne dans laquelle vous souhaitez la récupérer.
Voici un exemple de code:
ModelName::find($id_of_the_record, ['column_name'])->toArray()['column_name'];
Obtenir la valeur d'une colonne:
Table_Name::find($id)->column_name;
Même vous pouvez utiliser cette méthode avec la clause where:
Table_Name::where('id',$id)->first()->column_name;