我为拉威尔创造了信使。现在我想列出用户参与的所有线程,每个线程中都有消息计数。我要数到 where
子句,因为我只想显示这些线程,其中包含消息。
我当前的查询: $threads = Participant::with('thread.messages') -> where('user_id', Auth::user() -> id) -> get();
参与者:
public function user()
{
return $this -> hasOne(User::class, 'id', 'user_id');
}
public function thread()
{
return $this -> hasOne(Thread::class, 'id', 'thread_id');
}
线程:
public function participants()
{
return $this -> hasMany(Participant::class, 'thread_id', 'id');
}
function messages()
{
return $this -> hasMany(Message::class, 'thread_id', 'id');
}
信息:
function user()
{
return $this -> belongsTo(User::class, 'user_id', 'id');
}
谢谢!
2条答案
按热度按时间uoifb46i1#
尝试使用
withCount
对于线程消息:ghhaqwfi2#
你可以用
has
为了messages
与检查线程的关系有消息。之后,您需要使用whereHas
最后使用withCount
用于计算线程中的消息。打印数据
注意:您的关系名称
thread
在Participant
模型应该是belongsTo
相反hasOne
.