PHP框架Laravel中使用UUID实现数据分表操作示例
发布:smiling 来源: PHP粉丝网 添加日期:2021-09-21 19:58:27 浏览: 评论:0
本文实例讲述了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分表处理数据的例子就完成了。
Tags: Laravel UUID
相关文章
- ·Laravel 5.6中的CURD操作(代码示例详解)(2020-01-15)
- ·如何在laravel 5中创建用于XSS防御的中间件? (2020-01-16)
- ·关于Laravel重定向的七种方法详解(2020-01-26)
- ·如何在laravel 5中使用DB事务?(2020-01-31)
- ·Laravel中如何给图片加水印?(2020-04-05)
- ·Laravel框架数据库CURD操作、连贯操作总结(2021-04-10)
- ·Laravel框架路由配置总结、设置技巧大全(2021-04-10)
- ·Laravel框架中扩展函数、扩展自定义类的方法(2021-04-10)
- ·跟我学Laravel之快速入门(2021-04-16)
- ·跟我学Laravel之安装Laravel(2021-04-16)
- ·跟我学Laravel之配置Laravel(2021-04-16)
- ·跟我学Laravel之请求(Request)的生命周期(2021-04-16)
- ·跟我学Laravel之路由(2021-04-16)
- ·跟我学Laravel之请求与输入(2021-04-17)
- ·跟我学Laravel之视图 & Response(2021-04-17)
- ·laravel安装和配置教程(2021-04-19)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)