关于 laravel 关联查询的问题 ?

clipboard.png

clipboard.png

course 表中的 id = record 表中的 cid, uid 是用户id

如何查询出所有课程的同时, 查到有哪些用户学习了这门课程

下图是用 foreach 循环查出来的 , 感觉不太好

clipboard.png

代码如下

$course = DB::table('course')->get();
foreach ($course as $key => $value) {
    $value->recording = DB::table('record')->where('cid', $value->id)->get();
}

请问在不使用 Eloquent ORM 的情况下 , 用普通的关联查询该如何实现 ( 我用的是 laravel 5.1 版本 )

请各位大侠指点迷津 , 非常感谢

阅读 1.9k
1 个回答

经过验证后的内容。

之前的代码没有考虑 DB返回的是数组而非Collection实例,会导致一些方法不可用,其次first方法中未注意到,其需要两个参数,key,value。之前只给了一个参数。

$courses = collect(
            DB::table('courses')->get()
        );
        $records = collect(
            DB::table('record')
                ->whereIn(
                    'cid',
                    $courses
                        ->pluck('id')
                        ->toarray())
                ->get()
        );
        $result = $courses
            ->map(function ($course) use ($records) {
                $course->recording = $records
                    ->filter(function ($record) use ($course) {
                        return $course->id == $record->cid;
                    });
                return $course;
            });
        dd($result->toArray());

打印结果

clipboard.png

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题