卓越飞翔博客卓越飞翔博客

卓越飞翔 - 您值得收藏的技术分享站
技术文章16333本站已运行3317

在Laravel中如何选择表中的所有列名?

在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 IlluminateSupportFacadesSchema;

示例

这是一个使用schema类的工作示例 -

<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use IlluminateSupportFacadesSchema;

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 AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;

class Student extends Model {
   use HasFactory;
   protected $fillable = ['name','email','address'];
}

现在在你的控制器中使用模型来获取列名 -

<?php
namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppModelsStudent;

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 AppHttpControllers;
use IlluminateHttpRequest;
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 AppHttpControllers;
use IlluminateHttpRequest;
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] => 
)

卓越飞翔博客
上一篇: C++语言在嵌入式系统中实现高效能物联网通信功能的方法
下一篇: C++在嵌入式系统开发中的软件测试与调试功能实现技巧
留言与评论(共有 0 条评论)
   
验证码:
隐藏边栏