Laravel中如何在with闭包内获取每个学生中"__practice"最新的一条

$data = _Student::select('Stu_Id', 'Stu_Name', 'Stu_Class')
            ->with([
                '_Practice' => function ($query) {
                    $query->with(
                        [
                            '_Company' => function ($query) {
                                $query->select('Com_Id', 'Com_Name', 'created_at as Com_created');
                            },
                            '_LocalPhoto' => function ($query) {
                                $query->select('LPh_PId', 'created_at as LPh_created')
                                    ->orderBy('created_at','desc');
                            }
                        ])
                    ->select('Pra_Id', 'Pra_SId', 'Pra_ComId', 'Pra_SMSTime', 'created_at as Pra_created')
                    ->orderBy('created_at','desc');
            }
        ])->get()->toArray();
        

clipboard.png

运行如下:

clipboard.png

如何取出每个学生中 关联表"__practice"的最新一条。
如果在增加一个first()或limit(1),会出现下图的现象。
取所有学生的"__practice"最新的一条,而不是取每个学生的"__practice"最新的一条。效果很不理想。
修改成↓↓↓↓↓↓↓↓↓↓↓↓↓↓

$data = _Student::select('Stu_Id', 'Stu_Name', 'Stu_Class')

            ->with([
                '_Practice' => function ($query) {
                    $query->with(
                        [
                            '_Company' => function ($query) {
                                $query->select('Com_Id', 'Com_Name', 'created_at as Com_created');
                            },
                            '_LocalPhoto' => function ($query) {
                                $query->select('LPh_PId', 'created_at as LPh_created')
                                    ->orderBy('created_at','desc');
                            }
                        ])
                    ->select('Pra_Id', 'Pra_SId', 'Pra_ComId', 'Pra_SMSTime', 'created_at as Pra_created')
                    ->orderBy('created_at','desc')->first();
            }
        ])->get()->toArray();
        

运行如下:

clipboard.png

如何在with闭包中筛选每个学生中"__practice"最新的一条。
跪求大神回复!

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