检查 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();
我正在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();