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