Comment sélectionner tous les noms de colonnes dans une table dans Laravel ?

PHPz
Libérer: 2023-08-25 18:52:17
avant
1033 Les gens l'ont consulté

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
);
Copier après la connexion

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)
Copier après la connexion

Utiliser la classe Schema

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;
Copier après la connexion

Exemple

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);
   }
}
Copier après la connexion

Sortie

La sortie du code ci-dessus est la suivante.

Array(
   [0] => id
   [1] => name
   [2] => email
   [3] => created_at
   [4] => updated_at
   [5] => address
)
Copier après la connexion
Copier après la connexion

Utiliser la classe Modèle

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'];
}
Copier après la connexion

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);
   }
}
Copier après la connexion

Sortie

La sortie du code ci-dessus est.

Array(
   [0] => id
   [1] => name
   [2] => email
   [3] => created_at
   [4] => updated_at
   [5] => address
)
Copier après la connexion
Copier après la connexion

Exemple

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);
   }
}
Copier après la connexion

Sortie

La sortie du code ci-dessus est -

Array ( 
   [0] => id 
   [1] => name 
   [2] => email 
   [3] => created_at 
   [4] => updated_at 
   [5] => address
)
Copier après la connexion

Exemple

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);
   }
}
Copier après la connexion

Sortie

La sortie du code ci-dessus est.

Array ( 
   [id] => 
   [name] => 
   [email] => 
   [created_at] => 
   [updated_at] => 
   [address] => 
)
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!