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 相关文章推荐
WinXP + Apache +PHP5 + MySQL + phpMyAdmin安装全功略
Jul 09 PHP
模仿OSO的论坛(五)
Oct 09 PHP
PHP 服务器配置(使用Apache及IIS两种方法)
Jun 01 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
Dec 25 PHP
PHP读取汉字的点阵数据
Jun 22 PHP
Zend Framework动作助手Url用法详解
Mar 05 PHP
laravel学习教程之存取器
Jul 30 PHP
PHP实现的二分查找算法实例分析
Dec 19 PHP
PHP chunk_split()函数讲解
Feb 12 PHP
laravel邮件发送的实现代码示例
Jan 31 PHP
PHP const定义常量及global定义全局常量实例解析
May 28 PHP
PHP常用header头定义代码示例汇总
Aug 29 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
PHP 删除文件与文件夹操作 unlink()与rmdir()这两个函数的使用
2011/07/17 PHP
PHP用星号隐藏部份用户名、身份证、IP、手机号等实例
2014/04/08 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
php操作xml入门之xml基本介绍及xml标签元素
2015/01/23 PHP
列举PHP的Yii 2框架的开发优势
2015/07/03 PHP
PHP入门教程之面向对象基本概念实例分析
2016/09/11 PHP
javascript 必知必会之closure
2009/09/21 Javascript
JQuery中绑定事件(bind())和移除事件(unbind())
2015/02/27 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
2015/04/07 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
js停止冒泡和阻止浏览器默认行为的简单方法
2016/05/15 Javascript
Knockoutjs 学习系列(二)花式捆绑
2016/06/07 Javascript
JS中innerHTML和pasteHTML的区别实例分析
2016/06/22 Javascript
详解jQuery中关于Ajax的几个常用的函数
2017/07/17 jQuery
vue使用一些外部插件及样式的配置代码
2019/11/18 Javascript
JavaScript中的this基本问题实例小结
2020/03/09 Javascript
JS实现网页时钟特效
2020/03/25 Javascript
python中的reduce内建函数使用方法指南
2014/08/31 Python
Python中的作用域规则详解
2015/01/30 Python
Matplotlib 生成不同大小的subplots实例
2018/05/25 Python
python实现Flappy Bird源码
2018/12/24 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
详解Python3.8+PyQt5+pyqt5-tools+Pycharm配置详细教程
2020/11/02 Python
凯蒂·佩里个人女鞋品牌:Katy Perry Collections
2019/04/04 全球购物
DOUGLAS荷兰:购买香水和化妆品
2020/10/24 全球购物
Elizabeth Gage官网:英国最好的珠宝设计之一
2020/09/26 全球购物
装潢设计专业推荐信模板
2013/11/26 职场文书
个人四风问题整改措施
2014/10/24 职场文书
争先创优个人总结
2015/03/04 职场文书
出纳岗位职责范本
2015/03/31 职场文书
车辆管理制度范本
2015/08/05 职场文书
煤矿安全生产管理协议书
2016/03/22 职场文书
应届生们该怎么书写求职信?
2019/07/05 职场文书
如何用JS实现简单的数据监听
2021/05/06 Javascript
Python入门之使用pandas分析excel数据
2021/05/12 Python
Springboot中如何自动转JSON输出
2022/06/16 Java/Android