程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> 該如何使用thinkphp分表呢?

該如何使用thinkphp分表呢?

編輯:關於PHP編程

thinkphp分表怎麼使用
我預設了10個表 分別是 table_1、table_2、table_3....table_10

在Model中設置了partition:

protected $partition = array(
'field' => 'id',
'type' => 'id',
'expr' => '',
'num' => 10,
);

也使用了getPartitionTableName()
官方文檔說是必須傳入當前的數據。然後根據數據分析應該實際操作哪個數據表
而這個傳入當前數據是什麼數據, 我每次實驗的結果都是聯合查詢!不能找到當前表名!

------解決方法--------------------
你的分表字段是 id (PS:T不錯的PHP Q扣峮:276167802,驗證:csl)
所以在傳給 getPartitionTableName 的數據數組中必須含有關聯鍵為 id 的元素

不過他的算法有點奇特
  $field   =   $data[$this->partition['field']];


            switch($this->partition['type']) {


                case 'id':


                    // 按照id范圍分表


                    $step    =   $this->partition['expr'];


                    $seq    =   floor($field / $step)+1;


                    break;


.........


            return $this->getTableName().'_'.$seq;

按照你的設置,似乎應是 'type' => 'mod'
 case 'mod':


                    // 按照id的模數分表


                    $seq    =   ($field % $this->partition['num'])+1;


                    break;

------解決方法--------------------
你用 getPartitionTableName 取得的不就是表名嗎?

有了表名不就和不分表時一樣操作了嗎?

以上是本文關於thinkphp分表如何使用的方法,希望本文對廣大php開發者有所幫助,感謝閱讀本文。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved