如何按关系获取所有记录。
我喜欢这个:
return Conversation::with('messages')
->get();
所以我需要在数据透视表中返回所有的转发user_id
1
->wherePivot('user_conversation.user_id',1)
对此有何解决方案?
答案 0 :(得分:0)
假设Conversation
与belongsToMany
设置了User
关系,您可以使用whereHas()
方法将对话查询与用户关系约束起来。
$id = 1;
return Converstaion::with('messages')->whereHas('users', function ($userQuery) use ($id) {
$userQuery->where('id', $id);
})
->get();
这只会返回与ID为1的用户相关的会话。您可以在querying relationships下阅读有关whereHas()
和其他有用方法的更多信息。
如果您已加载用户,则另一个选项是返回该用户的对话:
$user = User::find(1);
return $user->conversations()->with('messages')->get();