欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PHP框架Laravel中使用UUID實(shí)現(xiàn)數(shù)據(jù)分表操作示例

 更新時(shí)間:2018年05月30日 12:05:19   作者:谷文杰  
這篇文章主要介紹了PHP框架Laravel中使用UUID實(shí)現(xiàn)數(shù)據(jù)分表操作,結(jié)合實(shí)例形式較為詳細(xì)的分析了Laravel框架基于UUID進(jìn)行數(shù)據(jù)分表的相關(guān)操作步驟、實(shí)現(xiàn)技巧與操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了PHP框架Laravel中使用UUID實(shí)現(xiàn)數(shù)據(jù)分表操作。分享給大家供大家參考,具體如下:

UUID

UUID是指在一臺(tái)機(jī)器上生成的數(shù)字,它保證對(duì)在同一時(shí)空中的所有機(jī)器都是唯一的。

說的簡單點(diǎn),它就是通過一個(gè)規(guī)則(如:業(yè)務(wù)標(biāo)識(shí)號(hào)+年月日+當(dāng)日自增數(shù)字格式化)生成的一個(gè)具有唯一性的辨識(shí)資訊。用于關(guān)聯(lián)我們的一些額數(shù)據(jù)和資訊。

實(shí)例

之前在做一個(gè)項(xiàng)目的時(shí)候用到這個(gè)東西,現(xiàn)在我就用Laravel框架寫一個(gè)簡單的demo

前端form表單

<!DOCTYPE html>
<html>
  <head></head>
  <body>
    <form action="/addMysql" method="post">
      {!!csrf_field()!!}
      <table>
        <tr>
          <th style="colspan:2">注冊(cè)</th>
        </tr>
        <tr>
          <td>賬號(hào)</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>

建立數(shù)據(jù)庫和數(shù)據(jù)表(只建立 1 個(gè)索引表 和 8 個(gè)進(jìn)行存儲(chǔ)詳細(xì)信息的子表)

原理:通過UUID的唯一特性,將一個(gè)數(shù)據(jù)的詳細(xì)信息數(shù)據(jù)存在其他表中的,這個(gè)表示通過UUID隨機(jī)分配出來的,索引表中只存儲(chǔ)UUID和關(guān)鍵字段

表前綴統(tǒng)一前綴-------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

通過路由和控制器進(jìn)行form表單提交數(shù)據(jù)向數(shù)據(jù)庫插入數(shù)據(jù)

路由:

//form表單頁面路由
Route::get('Mysql',function(){
  return view('home/Mysql');
});
//數(shù)據(jù)插入提交路由
Route::post('/addMysql','findMoreController@addMysql');

控制器:

//向數(shù)據(jù)庫插入數(shù)據(jù)
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得到的要向哪一張?jiān)敿?xì)信息表中插入的表的代表號(hào)

例如:$uid=3     那么就向user_3中插入詳細(xì)信息

插入成功后進(jìn)行查詢,先通過uname查詢出UUID,通過UUID知道詳細(xì)信息存儲(chǔ)在哪張子表中.然后再進(jìn)行查詢

路由:

//查詢頁面
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>

至此,一個(gè)簡單的利用UUID分表處理數(shù)據(jù)的例子就完成了。

更多關(guān)于Laravel相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Laravel框架入門與進(jìn)階教程》、《php優(yōu)秀開發(fā)框架總結(jié)》、《php面向?qū)ο蟪绦蛟O(shè)計(jì)入門教程》、《php+mysql數(shù)據(jù)庫操作入門教程》及《php常見數(shù)據(jù)庫操作技巧匯總

希望本文所述對(duì)大家基于Laravel框架的PHP程序設(shè)計(jì)有所幫助。

  • Thinkphp 框架擴(kuò)展之Widget擴(kuò)展實(shí)現(xiàn)方法分析

    Thinkphp 框架擴(kuò)展之Widget擴(kuò)展實(shí)現(xiàn)方法分析

    這篇文章主要介紹了Thinkphp 框架擴(kuò)展之Widget擴(kuò)展實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了Thinkphp 框架Widget擴(kuò)展概念、原理、實(shí)現(xiàn)方法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • 基于PHP實(shí)現(xiàn)用戶注冊(cè)登錄功能

    基于PHP實(shí)現(xiàn)用戶注冊(cè)登錄功能

    本課程通過使用PHP及Web前端技術(shù)實(shí)現(xiàn)一個(gè)網(wǎng)站注冊(cè)登錄入口頁面,學(xué)習(xí)并實(shí)踐PHP編程等,有興趣的同學(xué)可以參考一下。
    2016-10-10
  • 基于Snoopy的PHP近似完美獲取網(wǎng)站編碼的代碼

    基于Snoopy的PHP近似完美獲取網(wǎng)站編碼的代碼

    基于Snoopy的PHP近似完美獲取網(wǎng)站編碼 用于php爬蟲,獲取編碼準(zhǔn)確率99.9%, 還有部分不能獲取,求大牛完善
    2011-10-10
  • 怎么樣可以把 phpinfo()屏蔽掉?

    怎么樣可以把 phpinfo()屏蔽掉?

    怎么樣可以把 phpinfo()屏蔽掉?...
    2006-11-11
  • global.php

    global.php

    global.php...
    2006-12-12
  • 支持中文和其他編碼的php截取字符串函數(shù)分享(截取中文字符串)

    支持中文和其他編碼的php截取字符串函數(shù)分享(截取中文字符串)

    這篇文章主要介紹了支持中文和其他編碼的php截取字符串函數(shù)示例(截取中文字符串),需要的朋友可以參考下
    2014-03-03
  • ThinkPHP模板引擎之導(dǎo)入資源文件方法詳解

    ThinkPHP模板引擎之導(dǎo)入資源文件方法詳解

    這篇文章主要介紹了ThinkPHP模板引擎的導(dǎo)入資源文件方法,需要的朋友可以參考下
    2014-06-06
  • PHP時(shí)間戳 strtotime()使用方法和技巧

    PHP時(shí)間戳 strtotime()使用方法和技巧

    php strtotime()解釋如何使用,看了下面的文章就要以學(xué)習(xí)到了。下面還有php文檔函數(shù)解釋。
    2013-10-10
  • 最新評(píng)論