Maison  >  Article  >  développement back-end  >  Comment sélectionner tous les noms de colonnes dans une table dans Laravel ?

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

PHPz
PHPzavant
2023-08-25 18:51:401058parcourir

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)

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;

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);
   }
}

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
)

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'];
}

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);
   }
}

Sortie

La sortie du code ci-dessus est.

Array(
   [0] => id
   [1] => name
   [2] => email
   [3] => created_at
   [4] => updated_at
   [5] => address
)

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);
   }
}

Sortie

La sortie du code ci-dessus est -

Array ( 
   [0] => id 
   [1] => name 
   [2] => email 
   [3] => created_at 
   [4] => updated_at 
   [5] => address
)

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);
   }
}

Sortie

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer