今晚坚持这个...所以我正在建立一个由这个模式中的表格组成的消息系统:http://www.laravelsd.com/share/8nBZmc
因此,用户可以发布另一个用户可以向该用户发送关于该作业的消息的作业。这会触发要创建的对话,要发布的消息(包含发送它的用户的ID)以及要作为参与者添加到conversation_user数据透视表的两个user_id。
关于良好关系的工作HasMany对话,但BelongsTo用户,对话HasMany消息和BelongsTo工作,消息BelongTo对话等等。
我的问题是基于架构,如何显示与作业相关的消息总数?即如何获取作业ID并过滤与ID匹配的所有会话,然后计算针对每个会话的消息数量?与Eloquent相反,这是否会进入Query Builder的土地?显而易见的解决方案是将job_id添加到消息表中但是这个重复并且我现在太顽固了:)
答案 0 :(得分:2)
这应该有效:
$jobId = 1;
$count = Message::whereHas('conversation.job', function($q) use ($jobId){
$q->where('id', $jobId);
})->count();