php - Laravel orderby 与关系
问题描述
我正在尝试使用带有 OrderBy 函数的关系方法按每个级别对学生列表进行排序,但不幸的是,我无法让它工作,知道我的代码中缺少什么?
注意: 每次我删除订单时,我的代码都会起作用,但学生级别不会相应地安排
控制器:
$students=Student::with('level')->where(['status' => 'ENROLLED'])->get()->orderBy('level_name','asc');
看法
<table>
<tr>
<th>Name</th>
<th>Level</th>
</tr>
@foreach($students as $std)
<tr>
<td>
{{$std->student_name}}
</td>
<td>
@foreach($std->level as $lv)
{{$lv->level_name}}
@endforeach
</td>
</tr>
@endforeach
</table>
解决方案
您不能按关系排序,因为在引擎盖下 laravel 会在引擎盖下进行两个单独的查询。
您可以改为使用join
类似这样的东西(请注意我猜到了您的表名,因此您可能必须更新它们)。
$users = Student::join('levels', 'students.level_id', '=', 'levels.id')
->orderBy('levels. level_name', 'asc')->select('students.*')->paginate(10);
推荐阅读
- reactjs - Flex div 大小和 Tabulator 表(React 版本)
- reactjs - React/Axios - 从 API 获取损坏的图像
- python-xarray - 平均一个块的维度(xarray)
- php - 在表格单元格中显示 WooCommerce 常规价格
- laravel - Laravel - 过期帖子的碳
- linux - BASH:通过另一个命令的返回值过滤文件列表
- flutter - 如何在不关闭的情况下删除列表视图项目
- javascript - Javascript:在 3D 中旋转一个圆圈
- python-3.x - 为 Flair 模型训练准备数据框
- astropy - 如何从 SkyCoord 位置获取图像的 2D Cutout?