首頁 >後端開發 >php教程 >在Laravel中如何選擇表中的所有列名?

在Laravel中如何選擇表中的所有列名?

PHPz
PHPz轉載
2023-08-25 18:51:401080瀏覽

在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 類別代表資料庫中的表格。例如,如果您有學生表,模型名稱將為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中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除