php - Laravel 查询生成器选择具有不同条件的同一表同一列

标签 php mysql sql laravel query-builder

我有 2 个表,例如“用户”和“类(class)”。 我想要选择已通过两门类(class)的用户。

user               
id username
1 John
2 Jane

courses
id name user_id
1 course-1 1
2 course-2 1
3 course-1 2    

我使用:

(new User)->join('courses', 'courses.user_id', '=', 'user.id')
->whereIn('courses.name', ['course-1','course-2'])

但是此查询返回 2 个用户而不是 1 个(仅 john)。我想要 whereIn 返回 AND 连接而不是 OR 连接。

我想要这样的:

 SELECT * from user 
    join courses as c1 on c1.user_id = user.id
    join courses as c2 on c2.user_id = user.id
    where c1.name = 'course-1' and c2.name = 'course-2'

在 Laravel 中会怎样?

最佳答案

使用这个:

User::join('courses as c1', 'c1.user_id', '=', 'user.id')
    ->join('courses as c2', 'c2.user_id', '=', 'user.id')
    ->where('c1.name', 'course-1')
    ->where('c2.name', 'course-2')

顺便说一句:您应该使用 Eloquent relationships对于这样的情况。

关于php - Laravel 查询生成器选择具有不同条件的同一表同一列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50339445/

相关文章:

c# - 当不存在时,同一语句中的 MySQL Insert 和 Select 返回 'records'

php - 为什么 CFormModel::validate 需要在 tableName 中?

javascript - 融合图表传递用逗号分隔的参数会产生一些错误

php - 在 AJAX 成功时显示成功消息

mysql - 如何将数据从.MYD导入到MATLAB?

mysql - 如何根据mysql中的多个表计算一列

php - SQL 注入(inject)易受攻击的代码,即使我们正在清理输入 mysql_real_escape_string

sql - 如何在 SQL 查询中添加条件语句?

javascript - 如何使 html 下拉菜单与 PHP post 一起工作?

php - 如何在php中获取数组中的字符串存储