gpt4 book ai didi

mysql - Laravel 5 消息系统优化表结构

转载 作者:行者123 更新时间:2023-11-29 03:29:06 25 4
gpt4 key购买 nike

我正在努力弄清楚如何为用户制作最高效的消息传递系统。

我的想法是(与 Facebook 非常相似)当一个用户向另一个用户发送消息时,它会创建一个线程,显示用户之间发送的所有消息。重要的是将新邮件标记为收件人未读。

我想利用 Laravels 关系。

如果我创建一个包含收件人 ID 和发件人 ID 的数据透视表,我如何让 Laravel 区分使用 Laravel 关系的 2 个用户,以便我可以轻松获得用户涉及的线程列表,无论他是只是收件人、发件人或两者。

话题不需要标题/主题。

最佳答案

我会做这样的事情:

class User extends Model {
public function threads() { return $this->belongsToMany(Thread::class)->withPivot('last_read_message_id'); }
}

class Thread extends Model {
public function users() { return $this->belongsToMany(User::class)->withPivot('last_read_message_id'); }
public function messages() { return $this->hasMany(ThreadMessage::class); }
}

class ThreadMessage extends Model {
public function thread() { return $this->belongsTo(Thread::class); }
public function author() { return $this->belongsTo(User::class); }
}

// List of threads where a user is involved:
Auth::user()->threads;

这样的设计,还可以处理分组讨论,挺好的。

关于mysql - Laravel 5 消息系统优化表结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32705869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com