Wai*_*ein 2 mysql where-in laravel laravel-query-builder
我正在使用 Laravel 5.3 开发 Web 应用程序。我现在遇到了 Laravel 查询构建器方法 whereIn 的问题。这是我的场景:
我有这样的桌子。
student - id, name, dob
course - id, code
student_course - student_id, course_id
Run Code Online (Sandbox Code Playgroud)
我想要做的是让学生通过 student_course 表的 course_id 搜索而不加入任何表。在手动查询中,我喜欢这样。
SELECT * FROM `student` WHERE `student`.`id` IN (SELECT `student_id` FROM `student_course` WHRE `course_id`= ?)
Run Code Online (Sandbox Code Playgroud)
所以现在当我尝试将它转换为 Laravel 查询构建器时,我遇到了问题。这是我的代码:
DB::table('student')->whereIn('id',[ "Here I want to run sub query" ])->get();
Run Code Online (Sandbox Code Playgroud)
正如您在 whereIn() 的第二个参数中所见,我遇到了问题。在这种情况下,我是否需要运行原始查询?如何将原始查询作为第二个参数运行?如果不是,我怎样才能在像上面这样的一个查询中按 course_id 过滤而不加入任何表?
参考这个
$courseId = 1;
$data = DB::table('student')->whereIn('id',function($query) use (courseId){
$query->select('student_id')
->from('student_course')->where('course_id', '=',$courseId);
})->get();
Run Code Online (Sandbox Code Playgroud)