检查 Laravel 中子 table 中是否存在 2 条不同 user_id 的不同记录

Check if 2 records of different with different user_id exist in child table in Laravel

我正在laravel做一个聊天系统。我的 table 结构是

线程(id,主题) 参与者 (id, thread_id, user_id) 消息(id,thread_id,正文,文件)

我建立了关系“线程有许多参与者”“线程有许多消息”

现在的场景是: 假设有两个 ID 为 3 和 4 的用户。 我想检查是否存在两个参与者都匹配这两个用户 ID 的线程。

换句话说,我可以说“如果用户 3 和用户 4 是任何线程的参与者”

如何查询?

当你想确定是否存在任何拥有两个用户的线程时,你可以使用允许查询关系的whereHas方法。例如

$userIds = [ 3, 4 ];
$exists = Thread::whereHas( 'participants', function ( $query ) use ( $userIds ) {
    $query->whereIn( 'user_id', $userIds )
}, '>=', count( $userIds ) )->exists();