partition

最后更新于:2022-04-02 01:50:58

`partition` 方法用于是数据库水平分表 ~~~ partition($data, $field, $rule); // $data 分表字段的数据 // $field 分表字段的名称 // $rule 分表规则 ~~~ **注意:不要使用任何 SQL 语句中会出现的关键字当表名、字段名,例如 order 等。会导致数据模型拼装 SQL 语句语法错误。** `partition` 方法用法如下: ~~~ // 用于写入 $data = [ 'user_id' => 110, 'user_name' => 'think' ]; $rule = [ 'type' => 'mod', // 分表方式 'num' => 10 // 分表数量 ]; Db::name('log') ->partition(['user_id' => 110], "user_id", $rule) ->insert($data); // 用于查询 Db::name('log') ->partition(['user_id' => 110], "user_id", $rule) ->where(['user_id' => 110]) ->select(); ~~~ > 如果你的分表后缀是从0开始,而不是1的话,需要自定义分表类型,并自己写一个自定义函数 此时你的规则应该是: ~~~php $rule = [ 'type' => 'myMod', // 自定义分表方式,应该是一个函数 'num' => 10 // 分表数量 ]; ~~~ 同时在`common.php`中需要定义这个函数 ~~~php /** * 自定义分表规则 * * @param int $num * @return string */ function myMod($num) { return chr($num % 10 - 1); } ~~~ 注意,两边的规则参数,在这里是`10`是需要对应的,而不能只写在rule中
';