Laravel获取数据表字段注释的两种方法

最近,项目中有一个模块,需要根据不同的模型,动态获取数据表的字段与注释组成的关联数组,经过实践,总结出两种方法。

方法一

通过执行如下原生SQL获得,这种方式是网上能找到的最普遍的方式。

$sql = "SELECT COLUMN_COMMENT FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'db-name' AND TABLE_NAME = 'table-name' AND COLUMN_NAME = 'column-name'";
$result = \DB::select($sql);

上面的SQL语句还有另一种更简洁的写法:

SHOW FULL COLUMNS FROM `table-name`;

方法二

通过doctrine/dbal包来实现,首先通过composer安装doctrine/dbal包:

composer require doctrine/dbal

接下来就简单多了,直接执行如下代码即可获得表字段注释:

// 获取整张表的详细信息
$columns = \DB::getDoctrineSchemaManager()->listTableDetails('table-name');
// 获取年龄字段的注释
$ageColumnComment = $columns->getColumn('age')->getComment();
// 获取性别字段的注释
$sexColumnComment = $columns->getColumn('sex')->getComment();

这种方式相对第一种方式来说,性能稍微弱一点,但好在代码风格比较优雅,如果你比较看重代码风格,推荐使用第二种方式。

猜你喜欢

转载自blog.csdn.net/Abbotton/article/details/80860353