博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Laravel获取所有的数据库表及结构
阅读量:6982 次
发布时间:2019-06-27

本文共 1377 字,大约阅读时间需要 4 分钟。

遇到一个需求,需要修改数据库中所有包含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);}

 

https://blog.csdn.net/zhezhebie/article/details/78589812?locationNum=3&fps=1
你可能感兴趣的文章
c#时间转换
查看>>
调度器Quartz的简述与使用总结
查看>>
smokeping 安装
查看>>
Linux下安装oracle数据库步骤
查看>>
yum 不小心删除后安装
查看>>
vim 使用
查看>>
为敏感信息设置安全屏障
查看>>
mysql fabric安装使用测试
查看>>
java 对 mongoDB 分组统计操作 以及一些常用操作
查看>>
当你扛不住的时候就读读
查看>>
解决安装rrdtool遇到的一个问题
查看>>
linux启动过程
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
xmlUtil 解析 创建
查看>>
我的友情链接
查看>>
linux 命令(3)echo
查看>>
Nginx基础入门之nginx基础配置项介绍(2)
查看>>
一次详细全面的***报告
查看>>
c# 三种异步编程模型EAP(*)、 APM(*)和 TPL
查看>>