有时候业务中可能需要根据数据库中字段名字、数据类型等来进行不同处理的情况,总结了两种方式如下:
方法一:通过原生 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小技巧》
- 上一篇: 《5 个 Laravel Eloquent 小技巧》