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 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
用PHP伪造referer突破网盘禁止外连的代码
Jun 15 PHP
关于crontab的使用详解
Jun 24 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
php实现文件下载实例分享
Jun 02 PHP
php动态添加url查询参数的方法
Apr 14 PHP
CodeIgniter记录错误日志的方法全面总结
May 17 PHP
php观察者模式应用场景实例详解
Feb 03 PHP
php实现用户注册密码的crypt加密
Jun 08 PHP
PHP排序算法之希尔排序(Shell Sort)实例分析
Apr 20 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
Apr 10 PHP
php命令行模式代码实例详解
Feb 26 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 mail to 配置详解
2014/01/16 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
PHP简单实现欧拉函数Euler功能示例
2017/11/06 PHP
JQuery 入门实例1
2009/06/25 Javascript
JS获得URL超链接的参数值实例代码
2013/06/21 Javascript
动态添加删除表格行的js实现代码
2014/02/28 Javascript
在JavaScript中正确引用bind方法的应用
2015/05/11 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
微信小程序的分类页面制作
2017/06/27 Javascript
利用JQuery操作iframe父页面、子页面的元素和方法汇总
2017/09/10 jQuery
Vue-Router实现组件间跳转的三种方法
2017/11/07 Javascript
JavaScript实现的鼠标跟随特效示例【2则实例】
2018/12/22 Javascript
Vue实现点击箭头上下移动效果
2020/06/11 Javascript
Element Popover 弹出框的使用示例
2020/07/26 Javascript
antd table按表格里的日期去排序操作
2020/11/17 Javascript
[03:01]完美盛典趣味短片 DOTA2年度最佳&拉胯英雄
2019/12/07 DOTA
[01:10:48]完美世界DOTA2联赛PWL S2 GXR vs PXG 第一场 11.18
2020/11/18 DOTA
pycharm 使用心得(三)Hello world!
2014/06/05 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
利用Python脚本生成sitemap.xml的实现方法
2017/01/31 Python
django站点管理详解
2017/12/12 Python
基于Python pip用国内镜像下载的方法
2018/06/12 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
Python3.4学习笔记之列表、数组操作示例
2019/03/01 Python
keras读取h5文件load_weights、load代码操作
2020/06/12 Python
Python闭包装饰器使用方法汇总
2020/06/29 Python
Python requests上传文件实现步骤
2020/09/15 Python
Python+Xlwings 删除Excel的行和列
2020/12/19 Python
你正在寻找的CSS3 动画技术
2011/07/27 HTML / CSS
HTML利用九宫格原理进行网页布局
2020/03/13 HTML / CSS
班长岗位职责
2013/11/10 职场文书
最新结婚典礼主持词
2014/03/14 职场文书
工作年限证明模板
2014/11/01 职场文书
2016年八一建军节活动总结
2016/04/05 职场文书
PyTorch 如何检查模型梯度是否可导
2021/06/05 Python
vue使用element-ui按需引入
2022/05/20 Vue.js