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


Posted in PHP onOctober 10, 2019

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

以上这篇Laravel获取所有的数据库表及结构的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

PHP 相关文章推荐
php中判断一个字符串包含另一个字符串的方法
Mar 19 PHP
php 设计模式之 工厂模式
Dec 19 PHP
php获取本地图片文件并生成xml文件输出具体思路
Apr 27 PHP
跟我学Laravel之配置Laravel
Oct 15 PHP
9条PHP编程小知识及易犯的小错误
Jan 22 PHP
PHP基于MySQL数据库实现对象持久层的方法
Jun 17 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
Feb 26 PHP
Thinkphp5行为使用方法汇总
Dec 21 PHP
微信推送功能实现方式图文详解
Jul 12 PHP
Laravel5.4简单实现app接口Api Token认证方法
Aug 29 PHP
php数值计算num类简单操作示例
May 15 PHP
浅析PHP echo 和 print 语句
Jun 30 PHP
Laravel 数据库加密及数据库表前缀配置方法
Oct 10 #PHP
如何解决PHP获取不到SESSION信息之一般情况
Oct 10 #PHP
php获取微信openid方法总结
Oct 10 #PHP
phpinfo的知识点总结
Oct 10 #PHP
phpfpm的作用和用法
Oct 10 #PHP
在laravel中实现事务回滚的方法
Oct 10 #PHP
laravel Model 执行事务的实现
Oct 10 #PHP
You might like
php入门小知识
2008/03/24 PHP
php实现短信发送代码
2015/07/05 PHP
php array_key_exists() 与 isset() 的区别
2016/10/24 PHP
Laravel5.5 数据库迁移:创建表与修改表示例
2019/10/23 PHP
基于jquery的超简单上下翻
2010/04/20 Javascript
js使用栈来实现10进制转8进制与取除数及余数
2014/06/11 Javascript
js点击选择文本的方法
2015/02/09 Javascript
JavaScript DOM进阶方法
2015/04/13 Javascript
jQuery过滤HTML标签并高亮显示关键字的方法
2015/08/07 Javascript
Node.js制作简单聊天室
2017/01/12 Javascript
bootstrap multiselect 多选功能实现方法
2017/06/05 Javascript
聊聊Vue.js的template编译的问题
2017/10/09 Javascript
vue模块拖拽实现示例代码
2019/03/09 Javascript
vue组件数据传递、父子组件数据获取,slot,router路由功能示例
2019/03/19 Javascript
基于elementUI使用v-model实现经纬度输入的vue组件
2019/05/12 Javascript
JavaScript JSON数据处理全集(小结)
2019/08/15 Javascript
Node.js系列之连接DB的方法(3)
2019/08/30 Javascript
vue实现权限控制路由(vue-router 动态添加路由)
2019/11/04 Javascript
JS实现小米轮播图
2020/09/21 Javascript
VUE中鼠标滚轮使div左右滚动的方法详解
2020/12/14 Vue.js
python实现逆波兰计算表达式实例详解
2015/05/06 Python
对pandas将dataframe中某列按照条件赋值的实例讲解
2018/11/29 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
Python QT组件库qtwidgets的使用
2020/11/02 Python
canvas离屏技术与放大镜实现代码示例
2018/08/31 HTML / CSS
印度尼西亚最大的电商平台:Tokopedia(印尼版淘宝)
2017/12/02 全球购物
一套SQL笔试题
2016/08/14 面试题
暑期社会实践方案
2014/02/05 职场文书
我们的节日清明节活动总结
2014/04/30 职场文书
大学活动总结模板
2014/07/10 职场文书
在校大学生自我评价范文
2014/09/12 职场文书
个人培训总结
2015/03/05 职场文书
迎国庆主题班会
2015/08/17 职场文书
会计继续教育培训心得体会
2016/01/19 职场文书
2016春季运动会开幕词
2016/03/04 职场文书
GitHub上77.9K的Axios项目有哪些值得借鉴的地方详析
2021/06/15 Javascript