如何在Laravel中构建内部信使

vc6uscn9  于 2022-11-18  发布在  其他
关注(0)|答案(1)|浏览(146)

我正在用Laravel 9为一个站点构建一个内部信使。我希望能够向我的用户单方面发送消息。但这是如何工作的呢?如果我有4000个用户,是否应该在数据库中为每个用户插入一个消息副本?或者将带有透视表的消息连接到用户表?如果用户删除了该消息,我如何知道
我将邮件发送给了哪些用户?如何才能使服务器不会超时或崩溃?这样做是否会耗尽数据库的容量?正确的方法是什么?

y1aodyip

y1aodyip1#

创建两个表:聊天室和消息。将聊天室中的用户分组(一个聊天室中可以有两个以上的用户)。然后创建外键为room_id的消息。您还可以在消息中添加“阅读者”收件人,以查看阅读消息的收件人。只需在消息向上滚动以加载下一页时对消息进行分页即可。
rooms migration

Schema::create('chat_rooms', function (Blueprint $table) {
    $table->id();
    $table->string('_uuid', 50);
    $table->string('chat_initiator', 50);
    $table->json('user_ids');
    $table->timestamps();
});

messages migration

Schema::create('chat_messages', function (Blueprint $table) {
    $table->id();
    $table->string('_uuid', 50);
    $table->string('chat_room_id', 50);
    $table->string('posted_by_user', 50);
    $table->json('message');
    $table->json('read_by_recipients');
    $table->string('type', 10);
    $table->timestamps();
});

因为您使用json作为字段,所以将其添加到模型中

protected $casts = [
    'colummn_here' => 'array',
];

房间table

消息表

相关问题