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);
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/113089.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 完美者常用软件光盘2008

    完美者常用软件光盘2008下载地址:http://down.wmzhe.com/html/view-9663.htm1.JPG(45.22KB)2007-12-2719:102.JPG(49.8KB)2007-12-2719:103.JPG(44.11KB)2007-12-2719:1044.JPG(55.81KB)2007-1

  • pycharm安装教程anaconda_幸福原来如此简单作文800字

    pycharm安装教程anaconda_幸福原来如此简单作文800字**Python、Ipython、Pycharm的安装过程原来如此简单**本人目前大一,大数据~专业(相同专业的小可爱们可以一起讨论、共同进步哈)前几周刚接触到python这门课,起初安装一头蒙,于是开始疯狂的从网上找各种资源来了解这门课程及安装过程,以下是我的安装过程,希望可以帮助到一些刚入门的小白。一、安装python(以python2.x版本为例,python3.x同理)pyth…

  • 这10个Redis使用技巧,提升90%工作效率(建议收藏)

    前言 Redis 在当前的技术社区里是非常热门的。从来自 Antirez 一个小小的个人项目到成为内存数据存储行业的标准,Redis已经走过了很长的一段路。随之而来的一系列最佳实践…

  • c语言字符数组初始化的三种方式_c语言赋值字符串

    c语言字符数组初始化的三种方式_c语言赋值字符串C语言中字符数组的初始化与赋值,字符串相关函数!1.字符数组初始化在C语言中,字符串是当做字符数组来处理的;所以字符串有两种声明方式,一种是字符数组,一种是字符指针。(1)直接逐个初始化字符数组:字符数组的初始化,最容易理解的方式就是逐个字符赋给数组中各元素。charstr[10]={‘I’,”,’a’,’m’,”,‘h’,’a’,’p’,’p’…

  • 电商仓库erp软件_电商交易系统和订单系统

    电商仓库erp软件_电商交易系统和订单系统1、系统独立部署、永久使用,自行管理绑定和授权店铺账号,所有数据都保存在自己的数据库中,多账号使用不关联。2、支持前端的自定义开发和后端功能定制。3、零售、分销、批发、营销方式全面支持,支持兰亭、DX等批量发货、定期对账结算。4、ERP、商品、库存、订单、list售价、list库存实时同步。5、灵活的商品注册:支持多款式、组合品、商品图片6、将从平台下载的订单自动快速导入、自动派单、分配库存。7、具备每天300…

  • PyTorch建立resnet34和resnet101代码[通俗易懂]

    PyTorch建立resnet34和resnet101代码[通俗易懂]model.pyimporttorch.nnasnnimporttorchclassBasicBlock(nn.Module):expansion=1def__init__(self,in_channel,out_channel,stride=1,downsample=None):super(BasicBlock,self).__init__()self.conv1=nn.Conv2d(in_channels=

发表回复

您的电子邮箱地址不会被公开。

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