DCAT ADMIN 进行分表如何在controller 进行NEWMODEL时候修改不同表名

如题 最近开始进行分表 订单表根据时间分开 比如 order_12,order_11
但是在我
想要把参数传入并进行表名拼凑 却无法成功
有没有做分表的大佬分享一下经验

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 3
Mutoulee

file

跟你的使用场景应该差不多。

1年前 评论
1094968745 (楼主) 1年前

Laravel框架模型Model分表最简单的方法

首先创建一个BaseModel,将所有的Model都继承该BaseModel,在BaseModel中创建一个store方法:

设置查询的数据仓库(表)名称

    protected static function store($code='')
    {
        $model = new static;
        $model->code= $code;
       //calcTable分表算法,根据自己的实际情况修改
        $tableName = calcTable($model->table,$code);
        return $model->setTable($tableName)->newQuery();
    }
    /**
     * 获取分表后的表名
     * @return string
     */
    public function getStoreTable()
    {
        $model=new static;
        $code=$model->code;
        $table=$model->table;
         return  calcTable($table,$code);
    }

以OrderModel为例

class OrderModel extends BaseModel{
     protected $table = 'orders';
     protected $code = '';
     public function getTable()
    {
        return $this->getStoreTable();
    }
}

调用:

$order_num='110023729';
//查询
Orders::store($order_num)->where('status',1)->get();
//新增
$data=[
    'order_num'=>$order_num,
    'status'=>1
];
Orders::store($order_num)->insert($data);
1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!