当前位置:首页 > CMS教程 > 其它CMS > 列表

Laravel获取所有的数据库表及结构的方法

发布:smiling 来源: PHP粉丝网  添加日期:2021-12-30 11:28:49 浏览: 评论:0 

今天小编就为大家分享一篇Laravel获取所有的数据库表及结构的方法,具有很好的参考价值,希望对大家有所帮助,一起跟随小编过来看看吧。

遇到一个需求,需要修改数据库中所有包含email的字段的表,要把里面的长度改为128位。Laravel获取所有的表,然后循环判断表里面有没有email这个字段。

代码如下:

  1. use Illuminate\Support\Facades\Schema; 
  2. use DB; 
  3.  
  4. public function getDatabaseColumns() { 
  5.  $tables = DB::select('show tables'); 
  6.  $tables = array_column($tables'Tables_in_new_bcc_web'); 
  7.  $columns = ['email''user_name''nick_name''first_name''last_name']; 
  8.  // dd(Schema::getConnection()); 
  9.  foreach ($tables as $key => $value) { 
  10.   foreach ($columns as $k => $v) { 
  11.    if (Schema::hasColumn($value$v)) { 
  12.     $table[] = $value
  13.    }; 
  14.   } 
  15.   // $columns[] = Schema::getColumnListing('users'); 
  16.  } 
  17.  $table = array_unique($table); 
  18.  dd($table); 
  19.  
  20. Schema::getColumnListing('user'); 
  21. Schema::hasColumn($table$column_name

这里记一笔,比知道有没有更好的方法一步获取到当前连接的数据库里面的所有的表,我是用原生的sql语句show tables查出所有表,然后取出Tables_in_new_bcc_web这一列,然后才得到所有的表名,然后再去循环。

找到一个更棒的方式:

  1. public function getDatabaseColumns() { 
  2.  $tables = array_map('reset', \DB::select('SHOW TABLES')); 
  3.  $columns = ['email''user_name''nick_name''first_name''last_name']; 
  4.  foreach ($tables as $key => $value) { 
  5.   foreach ($columns as $k => $v) { 
  6.    if (Schema::hasColumn($value$v)) { 
  7.     $table[] = $value
  8.    }; 
  9.   } 
  10.  } 
  11.  $table = array_unique($table); 
  12.  dd($table); 
  13. }

Tags: Laravel获取数据库表

分享到: