以下是從 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類,您可以在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 )
Laravel 中的 Model 類別代表資料庫中的表格。例如,如果您有學生表,模型名稱將為student,對於用戶,模型名稱將為user,對於員工,模型名稱將為「employee」。表名必須是複數,模型名稱必須是單數。這是遵循的模式,但這並不妨礙您使用您選擇的表名稱和模型名稱的命名約定。
建立學生模型如下 -
<?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 )
您也可以使用控制器內部所示的資料庫外觀類別 -
<?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 )
使用資料庫外觀取得列的另一種方法是 -
<?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] => )
以上是在Laravel中如何選擇表中的所有列名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!