检索未读消息作为模型方法雄辩
Posted
技术标签:
【中文标题】检索未读消息作为模型方法雄辩【英文标题】:retrieve unread messages as model method eloquent 【发布时间】:2020-10-17 12:42:35 【问题描述】:我有一个简单的消息系统,像这样的工作,
1 个用户可以拥有多个对话 1 个用户可以收到许多对话 1 个对话有很多消息
表结构是这样的,
采访。
ID | 标题 | created_by (用户) | 收件人(用户)| created_at | 更新时间 |
消息。
ID |内容 |对话ID |发送者 | read_at | created_at |更新时间
我想要实现的是计算(或收集)所有未读用户作为关系/模型函数,即
$user->unreadMessages();
这可能吗?我正在努力解决如何做到这一点,因为我不能只查询消息,我只需要用户参与但他们尚未发送的对话的消息。
希望有人能提供帮助。我完全糊涂了,也许数据库需要重新设计以帮助阅读回执?
【问题讨论】:
"所有未读用户" whaaat? 检查文档中的“hasManyThrough” 【参考方案1】:如 cmets 中所述,使用 hasManyThrough
通过中间关系提供对远距离关系的访问。
如下定义关系:
用户模型
/**
* Get all of the UnReadMessages of the user.
*/
public function unreadMessages()
return $this->hasManyThrough(
Message::class,
Conversation::class,
'created_by',
'conversation_id')
->whereNull('read_at');
【讨论】:
以上是关于检索未读消息作为模型方法雄辩的主要内容,如果未能解决你的问题,请参考以下文章