首页 » Web技术 » Laravel » 正文

Laravel 获取数据库表中所有字段名称、数据类型、注释等的方法

有时候业务中可能需要根据数据库中字段名字、数据类型等来进行不同处理的情况,总结了两种方式如下:

方法一:通过原生 SQL

# 查看 db-name 库的 table-name 表中 column-name 字段的字段类型
$sql = "SELECT DATA_TYPE FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE TABLE_SCHEMA = 'db-name' 
    AND TABLE_NAME = 'table-name' 
    AND COLUMN_NAME = 'column-name'";
$result = \DB::select($sql);

MySQL 表的字段都会记录在 INFORMATION_SCHEMA.COLUMNS 表中,该表中主要字段有:

  • TABLE_SCHEMA – 库名
  • TABLE_NAME – 表名
  • COLUMN_NAME – 字段名称
  • COLUMN_DEFAULT – 默认值
  • IS_NULLABLE – 是否可以为 NULL
  • DATA_TYPE – 数据类型,如:int
  • CHARACTER_MAXIMUM_LENGTH – 最大长度
  • COLUMN_TYPE – 类型,如:int(10) unsigned
  • COLUMN_COMMENT – 注释

方法二:通过 doctrine/dbal 封装的方法

首先需要通过 composer 引入 doctrine/dbal 包:

composer require doctrine/dbal

之后就可以通过 DB Facade 来获取了:

/** @var \Doctrine\DBAL\Schema\AbstractSchemaManager $manager */
$manager = DB::connection()->getDoctrineSchemaManager();

/** @var \Doctrine\DBAL\Schema\Column $column */
$column = $manager->listTableDetails('table-name')->getColumn('cloumn-name');

// 数据类型
$dataType = $column->getType()->getName();

// 字段注释
$comment = $column->getComment();

更多的用法,可以参考 doctrine 的文档


该篇属于专题:《Laravel小技巧

发表评论