当前位置:首页 > PHP > 正文内容

laravel分表model映射的思路

陈杰2年前 (2020-11-04)PHP2271


预先估计会出现大数据量并且访问频繁的表,将其分为若干个表


这种预估大差不差的,论坛里面发表帖子的表,时间长了这张表肯定很大,几十万,几百万都有可能。 聊天室里面信息表,几十个人在一起一聊一个晚上,时间长了,这张表的数据肯定很大。像这样的情况很多。所以这种能预估出来的大数据量表,我们就事先分出个N个表,这个N是多少,根据实际情况而定。以聊天信息表为例:


我事先建100个这样的表,message_00,message_01,message_02……….message_98,message_99.然后根据用户的ID来判断这个用户的聊天信息放到哪张表里面,你可以用hash的方式来获得,可以用求余的方式来获得,方法很多,各人想各人的吧。


<?php
namespace App\Model\Member;

use App\Model\BaseModel;

class MemberLikeModel extends BaseModel
{
   public $connection = "mysql_logs";
   public $timestamps = false;
   public $table = "member_like";

   // 设置表后缀
   public function setSuffix(int $suffix, int $mold)
   {
       if ($suffix > 0) {
           $suffix      = intval($suffix % $mold) + 1;
           $this->table = $this->getTable() . '_' . $suffix;
       }
   }

   // 提供一个静态方法设置表后缀
   public static function suffix(int $suffix = 0, int $mold = 20)
   {
       $instance = new static;
       $instance->setSuffix($suffix, $mold);

       return $instance->newQuery();
   }
}


调用方式


$MemberLikeModel = MemberLikeModel::suffix($member_id, 20);
$MemberLikeModel->where('id', 1)->first();


扫描二维码至手机访问

扫描二维码推送至手机访问。

版权声明:本文由何烦过虎溪发布,如需转载请注明出处。

转载请注明出处:http://95shouyou.com/?id=6

分享给朋友:

相关文章

laravel集成极光推送实战

公司项目需要用到app推送消息通知,市面上很多推送渠道商,选来选去最终选定了极光推送,因为项目使用laravel写的,laravel自身又有模型事件,所以研究了一下,在不改动原有代码的情况下,给项目加...

Lumen框架报错Class session does not exist

Lumen框架报错Class session does not exist

由于lumen框架是为速度而生的 Laravel 框架,所以移除了session的支持,虽然在ide中代码提示可以敲出Session::put()方法出来,但是最终还是提示的是Class sessio...

php对接七牛云短信验证码实战

短信验证码登录的用处非常的大,登录,注册,修改密码,安全相关的啥都可以干。选定的七牛云短信是因为存储也是用的七牛云,七牛的sdk都加载进来了,也懒得去换其他的厂家了。下面上代码:Controller层...

laravel跨库多态关联实战

laravel跨库多态关联实战

点赞记录表做了分库分表,位于副库里面表结构该点赞表关联了8个不同的表,因为业务原因,评论回复表有四个板块,所以做了4个评论记录表,4个回复记录表,且结构有细微不同。目标是用户获得被点赞记录,根据不同的...

通过代码创建多个同样的mysql表

在分库分表中可能要同时创建多个结构相同但后缀不同的表,通过代码实现for ($i = 3; $i <= 20; $i++) {    DB::connection('...

laravel实现微信公众号授权登录实战

微信公众号授权登录实战框架:laravel依赖:overtrue/wechat首先安装一下easywechat依赖composer require overtrue/wechat:...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。