遇到一個需求,需要修改數據庫中所有包含email的字段的表,要把里面的長度改為128位。Laravel獲取所有的表,然后循環判斷表里面有沒有email這個字段。
代碼如下:
use Illuminate\Support\Facades\Schema;
use DB;
public function getDatabaseColumns() {
$tables = DB::select('show tables');
$tables = array_column($tables, 'Tables_in_new_bcc_web');
$columns = ['email', 'user_name', 'nick_name', 'first_name', 'last_name'];
// dd(Schema::getConnection());
foreach ($tables as $key => $value) {
foreach ($columns as $k => $v) {
if (Schema::hasColumn($value, $v)) {
$table[] = $value;
};
}
// $columns[] = Schema::getColumnListing('users');
}
$table = array_unique($table);
dd($table);
}
Schema::getColumnListing('user');
Schema::hasColumn($table, $column_name)
這里記一筆,比知道有沒有更好的方法一步獲取到當前連接的數據庫里面的所有的表,我是用原生的sql語句show tables查出所有表,然后取出Tables_in_new_bcc_web這一列,然后才得到所有的表名,然后再去循環。
找到一個更棒的方式:
public function getDatabaseColumns() {
$tables = array_map('reset', \DB::select('SHOW TABLES'));
$columns = ['email', 'user_name', 'nick_name', 'first_name', 'last_name'];
foreach ($tables as $key => $value) {
foreach ($columns as $k => $v) {
if (Schema::hasColumn($value, $v)) {
$table[] = $value;
};
}
}
$table = array_unique($table);
dd($table);
}
以上這篇Laravel獲取所有的數據庫表及結構的方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
您可能感興趣的文章:- Laravel框架數據庫CURD操作、連貫操作總結
- Laravel5.1數據庫連接、創建數據庫、創建model及創建控制器的方法
- Laravel框架實現多數據庫連接操作詳解
- Laravel如何同時連接多個數據庫詳解
- laravel框架數據庫配置及操作數據庫示例
- 淺談laravel數據庫查詢返回的數據形式
- Laravel創建數據庫表結構的例子
- laravel 操作數據庫常用函數的返回值方法
- Laravel5.5 數據庫遷移:創建表與修改表示例
- Laravel數據庫讀寫分離配置的方法
- Laravel框架DB facade數據庫操作詳解