我正在创建一个Laravel项目,我需要动态检索(MySQL)数据库中某些表的列名及其类型.目前,这是我的解决方案:
$columnTypes = array();
$columns = Schema::getColumnListing($tableName);
foreach($columns as $columnName) {
$columnTypes[$columnName] = DB::connection()->getDoctrineColumn($tableName, $columnName)->getType()->getName();
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,这需要大量的查询,因此需要很多时间(每个表最多约100毫秒).
有没有更快的方法来检索列的类型?
思考,更快将使用(对于MySQL):
$tables = array[/* table list */];
foreach($tables as $table){
$table_info_columns = DB::select( DB::raw('SHOW COLUMNS FROM "'.$table.'"'));
foreach($table_info_columns as $column){
$col_name = $column['Field'];
$col_type = $column['Type'];
var_dump($col_name,$col_type);
}
}
Run Code Online (Sandbox Code Playgroud)