Heim >Backend-Entwicklung >PHP-Tutorial >thinkphp分表怎么使用

thinkphp分表怎么使用

WBOY
WBOYOriginal
2016-06-23 14:21:461779Durchsuche

thinkphp 分表 partition

我预设了10个表 分别是 table_1、table_2、table_3....table_10
在Model中设置了partition:
protected $partition = array(
'field' => 'id',
'type' => 'id',
'expr' => '',
'num' => 10,
);
也使用了getPartitionTableName()
官方文档说是必须传入当前的数据。然后根据数据分析应该实际操作哪个数据表
而这个传入当前数据是什么数据,, 我每次实验的结果都是联合查询!不能找到当前表名!
请高手帮帮忙!或者有什么合适的方法!

回复讨论(解决方案)

你的分表字段是 id
所以在传给 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;

你的分表字段是 id
所以在传给 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;

怎么没看到数据达到多少条之后将会写入第二张表中之类的,CURD的时候怎么处理~~~

你用 getPartitionTableName 取得的不就是表名吗?
有了表名不就和不分表时一样操作了吗?

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn