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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 攻击技术

    攻击技术

    2021年3月12日
    154
  • 词法/语法分析框架 chrysanthemum 简介

    词法/语法分析框架 chrysanthemum 简介

    2021年8月21日
    84
  • java 多线程Thread、Runnable和Callable的区别和用法

    文章目录Callable实现多线程importjava.util.concurrent.Callable;importjava.util.concurrent.ExecutionException;importjava.util.concurrent.FutureTask;/**一、创建执行线程的方式三:实现Callable接口。相较于实现Runnable接口的方式,方法可以有返回值,并且可以抛出异常。**二、执行Callable方式,需要FutureT

    2022年4月7日
    45
  • 2018 java 阿里笔试题

    2018 java 阿里笔试题想进阿里的同学注意了,这里是修真院面试笔记整理,那么这里就给大家分享一下【2018java阿里笔试题】1、String,StringBuffer,StringBuilder的区别是什么?String为什么是不可变的?2、Vector,ArrayList,LinkedList的区别是什么?3、HashTable,HashMap,TreeMap区别?5、Tomcat,A…

    2025年10月14日
    2
  • 在Anaconda中安装OpenCV

    anaconda中安装OpenCV在anaconda中安装opencv查询Python与anaconda版本安装方法开始安装验证是否成功在anaconda中安装opencv本人使用的是win10系统,anaconda版本为4.7.12,python版本为3.7.4查询Python与anaconda版本按win+r键后输入cmd,弹出命令提示符窗口。然后输入:conda-V查询anaconda版本。输入:python查询python版本。后续安装opencv需要安装对应pyth

    2022年4月5日
    985
  • 嵌入式系统原理课后习题练习

    嵌入式系统原理课后习题练习嵌入式系统原理及应用—-基于ARMCortex-M3内核的STM32F103系列微控制器答案仅供参考,不喜勿喷~~本人比较懒,后面的就没仔细整

    2022年6月5日
    136

发表回复

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

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