You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel中如何通过外键对数据进行降序排序?

如何通过外键关联的字段对数据排序?

你可以通过两种常见方法实现按外键关联表的字段排序,以下是具体实现:

方法一:使用JOIN关联表排序(性能更优)

直接通过join关联两张表,指定关联表的字段进行排序,适合数据量较大的场景:

public function index()
{
    // 假设你要按JenisPengiriman表的`nama`字段升序排序,可根据实际字段调整
    $biaya_pengiriman = BiayaPengiriman::join('jenis_pengiriman', 'biaya_pengiriman.jenis_pengiriman_id', '=', 'jenis_pengiriman.id')
        ->orderBy('jenis_pengiriman.nama', 'asc')
        ->select('biaya_pengiriman.*') // 只查询主表字段,避免字段冲突
        ->get();

    return view('biaya_pengiriman.index', compact('biaya_pengiriman'));
}

方法二:使用Eloquent关联子查询排序(写法更简洁)

利用Eloquent的关联关系,通过子查询实现排序,适合数据量较小的场景,同时记得预加载关联避免N+1查询:

public function index()
{
    // 同样按JenisPengiriman表的`nama`字段升序排序
    $biaya_pengiriman = BiayaPengiriman::with('jenis') // 预加载关联,提升性能
        ->orderByRaw('(SELECT nama FROM jenis_pengiriman WHERE id = biaya_pengiriman.jenis_pengiriman_id) asc')
        ->get();

    return view('biaya_pengiriman.index', compact('biaya_pengiriman'));
}

注意事项

  • 替换代码中的nama为你实际需要排序的字段(比如JenisPengiriman表的created_at、kode等)
  • asc代表升序,改为desc即可实现降序排序
  • 若使用JOIN方法,确保两张表的字段名不冲突,必要时给字段加表前缀

内容的提问来源于stack exchange,提问作者Arya Rizky Sandi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 05:15:40