PHP框架Laravel中使用UUID实现数据分表操作示例


Posted in PHP onMay 30, 2018

本文实例讲述了PHP框架Laravel中使用UUID实现数据分表操作。分享给大家供大家参考,具体如下:

UUID

UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

说的简单点,它就是通过一个规则(如:业务标识号+年月日+当日自增数字格式化)生成的一个具有唯一性的辨识资讯。用于关联我们的一些额数据和资讯。

实例

之前在做一个项目的时候用到这个东西,现在我就用Laravel框架写一个简单的demo

前端form表单

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <form action="/addMysql" method="post">
      {!!csrf_field()!!}
      <table>
        <tr>
          <th style="colspan:2">注册</th>
        </tr>
        <tr>
          <td>账号</td>
          <td>
            <input type="text" name="uname" value="" />
          </td>
        </tr>
        <tr>
          <td>密码</td>
          <td>
            <input type="password" name="pwd" value="" />
          </td>
        </tr>
        <tr>
          <td>性别</td>
          <td>
            <input type="radio" name="sex" value="1" />:男
            <input type="radio" name="sex" value="0" />:女
          </td>
        </tr>
        <tr>
          <td>年龄</td>
          <td>
            <input type="text" name="age" value="" />
          </td>
        </tr>
        <tr>
          <td style="colspan:2">
            <input type="submit" value="提交" />
          </td>
        </tr>
      </table>
    </form>
  </body>
</html>

建立数据库和数据表(只建立 1 个索引表 和 8 个进行存储详细信息的子表)

原理:通过UUID的唯一特性,将一个数据的详细信息数据存在其他表中的,这个表示通过UUID随机分配出来的,索引表中只存储UUID和关键字段

表前缀统一前缀-------mall_
表 :    mall_index_user       索引表    -------uuid,uname
表0:    mall_user_0           uuid,uname,sex,age
表1:    mall_user_1
表2:    mall_user_2
表3:    mall_user_3
表4:    mall_user_4
表5:    mall_user_5
表6:    mall_user_6
表7:    mall_user_7

通过路由和控制器进行form表单提交数据向数据库插入数据

路由:

//form表单页面路由
Route::get('Mysql',function(){
  return view('home/Mysql');
});
//数据插入提交路由
Route::post('/addMysql','findMoreController@addMysql');

控制器:

//向数据库插入数据
public function addMysql(Request $request){
  $uuid =md5(uniqid(mt_rand (), true));
  $uid =hexdec(substr($uuid,0,1)) % 8;
  $sex = $request->input('sex');
  $age = $request->input('age');
  //dd($uuid);
  $uname = $request->input('uname');
  $result = DB::table('index_user')->insert(['uuid'=>$uuid,'uname'=>$uname]);
  $result1 = DB::table('user_'.$uid)->insert(['uuid'=>$uuid,'uname'=>$uname,'sex'=>$sex,'age'=>$age]);
  if($result1){
    return '1';
  }else{
    return '0';
  }
}

解:上面的$uid就是通过UUID得到的要向哪一张详细信息表中插入的表的代表号

例如:$uid=3     那么就向user_3中插入详细信息

插入成功后进行查询,先通过uname查询出UUID,通过UUID知道详细信息存储在哪张子表中.然后再进行查询

路由:

//查询页面
Route::get('findMysql',function(){
  return view('home/findMysql');
});
//查询路由
Route::post('/findMysql','findMoreController@findMysql');

控制器:

//查询
public function findMysql(Request $request){
    //dd($request);
    $uname=$request->input('uname');
    $uuid =DB::table('index_user')->where('uname','=',$uname)->value('uuid');
    $uid =hexdec(substr($uuid,0,1)) % 8;
    $userInfos=DB::table('user_'.$uid)->get();
    if($userInfos){
      return view('home/selectMysql',['userInfos'=>$userInfos]);
    }else{
      return view('home/findMysql');
    }
}

前端展示

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <form action="" method="post">
      <table>
        <tr>
          <th style="colspan:2">遍历</th>
        </tr>
        @foreach($userInfos as $userInfo)
        <tr>
          <td>性别</td>
          <td>
            <input type="text" name="" value="{{$userInfo->sex}}" />
          </td>
        </tr>
        <tr>
          <td>年龄</td>
          <td>
            <input type="text" name="" value="{{$userInfo->age}}" />
          </td>
        </tr>
        @endforeach
      </table>
    </form>
  </body>
</html>

至此,一个简单的利用UUID分表处理数据的例子就完成了。

希望本文所述对大家基于Laravel框架的PHP程序设计有所帮助。

PHP 相关文章推荐
在PHP中实现Javascript的escape()函数代码
Aug 08 PHP
php中通过正则表达式下载内容中的远程图片的函数代码
Jan 10 PHP
php+ajax做仿百度搜索下拉自动提示框(有实例)
Aug 21 PHP
Function eregi is deprecated (解决方法)
Jun 21 PHP
php实现httpclient类示例
Apr 08 PHP
PHP中的命名空间相关概念浅析
Jan 22 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
php列出mysql表所有行和列的方法
Mar 13 PHP
基于PHP后台的Android新闻浏览客户端
May 23 PHP
PHP判断json格式是否正确的实现代码
Sep 20 PHP
基于swoole实现多人聊天室
Jun 14 PHP
Yii框架Session与Cookie使用方法示例
Oct 14 PHP
php支付宝系列之电脑网站支付
May 30 #PHP
Laravel框架使用Redis的方法详解
May 30 #PHP
php实现微信支付之退款功能
May 30 #PHP
分享5个非常有用的Laravel Blade指令
May 30 #PHP
php实现微信支付之企业付款
May 30 #PHP
ThinkPHP5框架缓存查询操作分析
May 30 #PHP
PHP实现通过CURL上传文件功能示例
May 30 #PHP
You might like
详细介绍:Apache+PHP+MySQL配置攻略
2006/09/05 PHP
php单例模式示例分享
2015/02/12 PHP
PHP常用技巧汇总
2016/03/04 PHP
PHP对XML内容进行修改和删除实例代码
2016/10/26 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
FileUpload上传图片(图片不变形)
2010/08/05 Javascript
jquery的Theme和Theme Switcher使用小结
2010/09/08 Javascript
JS模拟面向对象全解(二、类型与赋值)
2011/07/13 Javascript
jQuery 拖动层(在可视区域范围内)
2012/05/24 Javascript
Jquery实现列表(隔行换色,全选,鼠标滑过当前行)效果实例
2013/06/09 Javascript
jQuery根据ID获取input、checkbox、radio、select的示例
2014/08/11 Javascript
nodejs命令行参数处理模块commander使用实例
2014/09/17 NodeJs
javascript模拟php函数in_array
2015/04/27 Javascript
JavaScript实现输入框(密码框)出现提示语
2016/01/12 Javascript
jQuery使用animate实现ul列表项相互飘动效果示例
2016/09/16 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
js实现点击按钮弹出上传文件的窗口
2016/12/23 Javascript
vue.js异步上传文件前后端实现代码
2017/08/22 Javascript
微信小程序上传图片到服务器实例代码
2017/11/07 Javascript
实现单层json按照key字母顺序排序的示例
2017/12/06 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
在vue中更换字体,本地存储字体非引用在线字体库的方法
2018/09/28 Javascript
Python实现的Kmeans++算法实例
2014/04/26 Python
用python实现k近邻算法的示例代码
2018/09/06 Python
PyCharm 创建指定版本的 Django(超详图解教程)
2019/06/18 Python
python代码能做成软件吗
2020/07/24 Python
Python extract及contains方法代码实例
2020/09/11 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
带有css3动画效果的兼容多浏览器简单导航条示例
2014/01/26 HTML / CSS
美国嘻哈文化生活方式品牌:GLD
2018/04/15 全球购物
伦敦的高级牛仔布专家:Trilogy
2018/08/06 全球购物
会计自荐信范文
2014/03/09 职场文书
《狼和小羊》教学反思
2014/04/20 职场文书
运动会加油口号
2014/06/07 职场文书
工地例会施工汇报材料
2014/08/22 职场文书
SQL SERVER触发器详解
2022/02/24 SQL Server