遇到一個(gè)需求,需要修改數(shù)據(jù)庫(kù)中所有包含email的字段的表,要把里面的長(zhǎng)度改為128位。Laravel獲取所有的表,然后循環(huán)判斷表里面有沒(méi)有email這個(gè)字段。
代碼如下:
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)
這里記一筆,比知道有沒(méi)有更好的方法一步獲取到當(dāng)前連接的數(shù)據(jù)庫(kù)里面的所有的表,我是用原生的sql語(yǔ)句show tables查出所有表,然后取出Tables_in_new_bcc_web這一列,然后才得到所有的表名,然后再去循環(huán)。
找到一個(gè)更棒的方式:
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獲取所有的數(shù)據(jù)庫(kù)表及結(jié)構(gòu)的方法就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
標(biāo)簽:山南 鷹潭 赤峰 烏魯木齊 南寧 迪慶 三亞 濟(jì)寧
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Laravel獲取所有的數(shù)據(jù)庫(kù)表及結(jié)構(gòu)的方法》,本文關(guān)鍵詞 Laravel,獲取,所,有的,數(shù)據(jù)庫(kù),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。