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

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

遇到一个需求,需要修改数据库中所有包含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://javaforall.net/113089.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • clion激活码2021[在线序列号]

    clion激活码2021[在线序列号],https://javaforall.net/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

    2022年3月19日
    78
  • Linux同步机制_进程同步机制

    Linux同步机制_进程同步机制Linux中的同步机制(一)–Futex引子在编译2.6内核的时候,你会在编译选项中看到[*]Enablefutexsupport这一项,上网查,有的资料会告诉你”不选这个内核不一定能正确的运行使用glibc的程序”,那futex是什么?和glibc又有什么关系呢?1.什么是FutexFutex是FastUserspacemuTexes的缩写,由Hubertus

    2022年9月14日
    1
  • 漫画网站服务器,建立家庭漫画服务器,从iPad上看漫画

    漫画网站服务器,建立家庭漫画服务器,从iPad上看漫画好,故事开始。以前就在想,在retina屏幕的iPad上看漫画该多爽。可是现在捧着iPad却发现看漫画很困难,自己电脑上下载了一堆漫画都是jpg图片,导入iBook也很麻烦。现在通过家里的iMac建立一个家庭漫画服务器,直接在线浏览速度快、体验好,而且还很方便。以后下载了漫画往目录里一扔,就可以拿起iPad看了。需要工具:MAMP是Mac下出名的Apache-MySQL-PHP服务器套件。…

    2022年6月17日
    22
  • 【SQL Server】关于报错“备份集中的数据库备份与现有的数据库”xxx”不同”的解决方案

    【SQL Server】关于报错“备份集中的数据库备份与现有的数据库”xxx”不同”的解决方案在做数据库备份与还原的过程中可能因为一下小的细节导致通过备份文件还原的时候报错:备份集中的数据库备份与现有的数据库"xxx"不同导致这种报错的原因是:备份文件与现有数据库的结构不一致因此要恢复数据库就需要去“选项”中勾选“覆盖现有数据库”这样备份就搞定了 …

    2022年6月9日
    36
  • Spring笔记(4)

    Spring笔记(4)

    2021年11月11日
    45
  • Xray扫描器[通俗易懂]

    Xray扫描器[通俗易懂]简介xray是一款可以使用HTTP/HTTPS代理进行被动扫描的安全工具,支持功能如下独立的URL扫描 基于HTTP的被动代理扫描,同时支持HTTPS SQL注入检测模块 命令注入检测模块 任意重定向检测模块 路径遍历模块Xray扫描器内置插件XSS漏洞检测(key:xss):利用语义分析的方式检测XSS漏洞 SQL注入检测(key:sqldet…

    2022年5月30日
    181

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号