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

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

本作品采用《CC 协议》,转载必须注明作者和本文链接
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 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年前 评论

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