我有以下查询从我的数据库中获取随机问题:
$q = Question::inRandomOrder()->first();
我生成的每个问题都保存在user_questions
,结构如下:
id | question_id | user_id
我的目标是使用上面的雄辩查询生成随机问题,并排除用户已有的所有问题。
例如,如果我的user_questions表中有以下记录:
1 | 133 | 234
2 | 134 | 234
3 | 543 | 234
返回随机问题的查询,不包括 133,134和543 。
有什么想法吗?
答案 0 :(得分:2)
您可以使用whereDoesntHave()
排除用户已有的问题:
$randomQuestion = Question::whereDoesntHave('users', function($q) use($userId) {
$q->where('id', $userId);
})
->inRandomOrder()
->first();