thinkphpテーブルの使い方

WBOY
WBOYオリジナル
2016-06-23 14:21:461779ブラウズ

thinkphp テーブル パーティション

10 個のテーブル、つまり table_1、table_2、table_3....table_10 を事前設定しました
モデルにパーティションを設定します:
protected $partition = array(
'field' => 'id ',
' type' => 'id',
'expr' => '',
'num' => 10,
); 公式ドキュメントには、Current data で渡す必要があると記載されています。それでは、データ分析に従って実際にどのデータテーブルを操作する必要がありますか? そして、現在のデータはどのようなデータに渡されますか? 私の各実験の結果は結合クエリです!現在のテーブル名が見つかりません。
専門家の方、助けてください!それとも何か適当な方法があるのでしょうか?


ディスカッションへの返信 (解決策)
あなたのパーティション テーブル フィールドは ID です

したがって、getPartitionTableName に渡されるデータ配列には、関連付けられたキー ID を持つ要素が含まれている必要があります

しかし、彼のアルゴリズムは少し奇妙です あなたの設定によると、それは'type' => 'mod' であるべきだと思われます

            $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;


パーティションテーブルのフィールドは id です
したがって、getPartitionTableName に渡されるデータ配列には、関連付けられたキー ID を持つ要素が含まれている必要があります

しかし、彼のアルゴリズムは少し奇妙です

                case 'mod':                    // 按照id的模数分表                    $seq    =   ($field % $this->partition['num'])+1;                    break;
設定によると、'type' => 'mod' になるはずです
            $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;

2 番目のテーブルにどのくらいのデータが書き込まれるか見てみましょう~~~

getPartitionTableNameで取得したテーブル名ではないでしょうか?
テーブル名だとテーブルを分割しないのと同じではないでしょうか?

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。