如何在 Laravel 中選擇表中的所有列名?
以下是在 Laravel 中獲取表中列名的幾種方法。
假設我們使用以下查詢在 MySQL 資料庫中建立了一個名為 Students 的表:
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 );
您可以使用 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)
使用 Schema 類
使用 Schema 類,您可以在 Laravel 中建立和更新表。要使用 Schema 類,請將以下類新增到您的控制器中。
use Illuminate\Support\Facades\Schema;
示例
這是一個使用 Schema 類的可執行示例:
<?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); } }
輸出
以上程式碼的輸出如下所示。
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
使用 Model 類
Laravel 中的 Model 類代表資料庫中的表。例如,如果您有 students 表,則模型名稱將為 student;對於 users 表,則為 user;對於 employees 表,則為 employee。表名通常是複數,模型名通常是單數。這是一個常用的模式,但這並不會阻止您使用您選擇的表名和模型名的命名約定。
如下所示建立 student 模型:
<?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']; }
現在在您的控制器中使用該模型來獲取列名:
<?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); } }
輸出
以上程式碼的輸出是。
Array( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
示例
您也可以在控制器中使用 DB facade 類,如下所示:
<?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); } }
輸出
以上程式碼的輸出是:
Array ( [0] => id [1] => name [2] => email [3] => created_at [4] => updated_at [5] => address )
示例
另一種使用 DB facade 獲取列的方法是:
<?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); } }
輸出
以上程式碼的輸出是。
Array ( [id] => [name] => [email] => [created_at] => [updated_at] => [address] => )
廣告