$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();
运行如下:
如何取出每个学生中 关联表"__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();
运行如下:
如何在with闭包中筛选每个学生中"__practice"最新的一条。
跪求大神回复!