• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP框架Laravel中使用UUID实现数据分表操作示例
    POST TIME:2021-10-18 05:01

    本文实例讲述了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相关内容感兴趣的读者可查看本站专题:《Laravel框架入门与进阶教程》、《php优秀开发框架总结》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

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

    您可能感兴趣的文章:
    • Laravel关联模型中过滤结果为空的结果集(has和with区别)
    • Laravel模型间关系设置分表的方法示例
    • Laravel模型事件的实现原理详解
    • laravel学习笔记之模型事件的几种用法示例
    • laravel学习教程之关联模型
    • Laravel 5框架学习之模型、控制器、视图基础流程
    • Laravel框架学习笔记(二)项目实战之模型(Models)
    • Laravel框架数据库CURD操作、连贯操作总结
    • PHP开发框架Laravel数据库操作方法总结
    • Laravel框架模型的创建及模型对数据操作示例
    上一篇:php支付宝系列之电脑网站支付
    下一篇:PHP以json或xml格式返回请求数据的方法
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信