Maison > Article > développement back-end > Comment sélectionner tous les noms de colonnes dans une table dans Laravel ?
Voici les différentes manières d'obtenir les noms de colonnes d'une table dans Laravel.
Supposons que nous créions une table appelée Students dans une base de données MySQL en utilisant la requête suivante :
CREATE TABLE students( id INTEGER NOT NULL PRIMARY KEY, name VARCHAR(10) NOT NULL, email VARCHAR(15) NOT NULL, created_at VARCHAR(27) NOT NULL, updated_at VARCHAR(27) NOT NULL, address VARCHAR(3) NOT NULL );
Vous pouvez obtenir ses détails complets à l'aide de la commande DESC -
mysql> desc students; +------------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+-------------+------+-----+---------+-------+ | id | int | NO | PRI | NULL | | | name | varchar(15) | NO | | NULL | | | email | varchar(20) | NO | | NULL | | | created_at | varchar(27) | YES | | NULL | | | updated_at | varchar(27) | YES | | NULL | | | address | varchar(30) | NO | | NULL | | | age | int | YES | | NULL | | +------------+-------------+------+-----+---------+-------+ 7 rows in set (0.08 sec)
En utilisant la classe de schéma, vous pouvez créer et mettre à jour des tables dans Laravel. Pour utiliser des classes de schéma, ajoutez les classes suivantes à votre contrôleur.
use Illuminate\Support\Facades\Schema;
Voici un exemple fonctionnel utilisant la classe de schéma -
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Support\Facades\Schema; class StudentController extends Controller { public function index() { $columns = Schema::getColumnListing('students'); print_r($columns); } }
La sortie du code ci-dessus est la suivante.
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
La classe Model dans Laravel représente la table dans la base de données. Par exemple, si vous avez une table étudiant, le nom du modèle sera étudiant, pour utilisateur, le nom du modèle sera utilisateur et pour employé, le nom du modèle sera « employé ». Les noms de tables doivent être au pluriel et les noms de modèles doivent être au singulier. C'est le modèle à suivre, mais cela ne vous empêche pas d'utiliser une convention de dénomination de votre choix pour les noms de tables et de modèles.
Créez le modèle étudiant comme suit -
<?php namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; class Student extends Model { use HasFactory; protected $fillable = ['name','email','address']; }
Utilisez maintenant le modèle dans votre contrôleur pour obtenir les noms des colonnes -
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Student; class StudentController extends Controller { public function index() { $student = Student::first(); $table_columns = array_keys(json_decode($student, true)); print_r($table_columns); } }
La sortie du code ci-dessus est.
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
Vous pouvez également utiliser la classe d'apparence et de convivialité de la base de données affichée à l'intérieur du contrôleur -
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; class StudentController extends Controller { public function index() { $table = DB::table('students')->get(); $cols = array_keys(json_decode(json_encode($table[0]), true)); print_r($cols); } }
La sortie du code ci-dessus est -
Array ( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
Une autre façon d'obtenir des colonnes à l'aide de l'apparence de la base de données est -
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use DB; class StudentController extends Controller { public function index() { $columns_names = []; $tableDet = DB::select("SHOW COLUMNS FROM students"); foreach($tableDet as $column) { $columns_names[$column->Field] = ''; } print_r($columns_names); } }
La sortie du code ci-dessus est.
Array ( [id] => [name] => [email] => [created_at] => [updated_at] => [address] => )
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!