laravel 的 `orderby()` 无法直接对 `with()` 预加载的深层关联字段(如 `file.property.full_address`)排序,必须通过 `join()` 显式关联表并引用实际数据库列才能实现。
在 Laravel 中,orderBy('file.property.full_address') 这类写法会报错 Unknown column 'file.property.full_address',根本原因在于:orderBy() 只作用于主查询表(此处为 finance_invoices)的字段,或已通过 JOIN 引入的表字段;而 with() 是独立的预加载查询,其关联表不会出现在主 SQL 的 FROM/JOIN 子句中,因此无法被 ORDER BY 引用。
✅ 正确做法是使用 join() 显式连接关联表链,并在 orderBy() 中使用带表别名的字段名。假设你的模型关系如下:
则可改写为:
$invoices = \App\Finance_Invoices::query()
->select('finance_invoices.*') // 显式指定主表字段,避免 SELECT *
->join('finance_files', 'finance_invoices.file_id', '=', 'finance_files.id')
->join('properties', 'finance_files.property_id', '=', 'properties.id')
->join('landlords', 'properties.landlord_id', '=', 'landlords.id')
->where('finance_invoices.period', '02')
->where('finance_invoices.year', '2025')
->where('finance_invoices.paid_to_landlord', 0)
->whereColumn('finance_invoices.total_paid', '>=', 'finance_invoices.amount')
->where('landlords.id', $id)
->orderBy('properties.full_address')
->get();? 关键注意事项:
? 总结:Laravel 不支持对 with() 关联路径做 orderBy,这
是底层 SQL 限制,而非框架缺陷。始终记住——排序依赖 JOIN,预加载仅用于数据补充。 正确组合 join() + with(),即可兼顾性能与功能。
# laravel
# app
# ai
# sql
# Nullable
# Property
# 访问器
# column
# 数据库
# 加载
# 字段名
# 出现在
# 并在
# 这类
# 分页
# 不支持
# 报错
# 而非
# 如需
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
网络优化76771 】
【
技术知识130152 】
【
IDC云计算60162 】
【
营销推广131313 】
【
AI优化88182 】
【
百度推广37138 】
【
网站推荐60173 】
【
精选阅读31334 】
相关推荐:
Python脚本参数接收_sys与argparse解析【指导】
怎么将XML数据可视化 D3.js加载XML
Windows10如何查看蓝屏日志_Win10使用事件查看器分析Dump文件
PHP 中如何在函数内持久修改引用变量所指向的目标
如何在Golang中捕获JSON序列化错误_Golangjson.Marshal错误处理示例
Python迭代器生成器进阶教程_节省内存与懒加载实战
如何将竖排文本文件转换为横排字符串
php删除数据怎么软删除_添加is_del字段标记删除【技巧】
C++中的std::shared_from_this有什么用?C++安全获取this的shared_ptr【智能指针】
用Python构建微服务架构实践_FastAPI与Django对比详解
如何使用Golang读取日志文件_Golang bufio Scanner日志处理示例
php后缀怎么变mp4能播放_让php伪装mp4正常播放的技巧【技巧】
如何在Golang中处理云原生事件_使用Event和Notification机制
为什么Go需要go mod文件_Go go mod文件作用说明
C++如何使用std::transform批量处理容器元素?(代码示例)
Win11怎么关闭右下角弹窗_Win11拦截系统通知广告【设置】
Windows10怎样设置家长控制_Windows10家长控制设置方法【指南】
如何在Golang中处理模块冲突_解决依赖版本不兼容问题
Python对象生命周期管理_创建销毁解析【教程】
Win11 C盘满了怎么清理 Win11磁盘清理和存储感知使用教程【新手必看】
如何在 Go 中正确反序列化多个同级 XML 元素(而非单个根节点)
Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】
短链接怎么用php还原_从基础原理到代码实现教学【详解】
win11如何清理传递优化文件 Win11为C盘瘦身删除更新缓存【技巧】
Win10怎样安装Excel数据分析工具_Win10安装分析工具包步骤【教程】
如何在Golang中使用闭包_封装变量与函数作用域
如何将文本文件中的竖排字符串转换为横排字符串
Windows10系统更新错误0x80070002_Win10自动更新失败手动修复
Win11如何设置系统声音_Win11系统声音调整教程【攻略】
如何使用Golang template生成文本模板_动态生成HTML或文本
php查询数据怎么导出csv_查询结果转csv文件保存【操作】
php订单日志怎么记录发货_php记录订单发货操作日志指南【指南】
Win11怎么关闭系统提示音_Windows11声音方案设为无声教程
c++如何使用std::bitset进行位图算法_c++ 快速查找与大规模数据排重【方法】
Windows服务无法启动错误1067是什么_进程意外终止的解决方法
Mac怎么设置登录项_Mac管理开机自启动程序【教程】
Windows系统被恶意软件破坏后的恢复策略_错误提示修复方式
如何在 VS Code 中正确配置并使用 NumPy
Win11怎么制作U盘启动盘_Win11原版系统安装盘制作【详解】
Win10如何更改网络连接_Windows10以太网属性IP配置
如何使用Golang处理网络超时错误_Golang请求超时异常处理方法
Windows10如何重置此电脑_Windows10电脑重置方法【步骤】
Python技术债务管理_长期维护解析【教程】
Win11怎么检查TPM2.0模块_Windows11受信任平台模块开启状态查询
php怎么下载安装后设置默认字符集_utf8配置步骤【详解】
PHP主流架构怎么监控运行状态_工具推荐【操作】
Win11怎么更改计算机名_Windows11系统信息重命名设备教程
如何自定义Windows终端的默认配置文件?(PowerShell/CMD)
Golang如何测试HTTP中间件_Golang HTTP中间件功能测试实践
Win11怎么修复系统文件_使用sfc命令修复Win11系统【技巧】
2026-01-01
致胜网络推广营销网专注海外推广十年,是谷歌推广.Facebook广告全球合作伙伴,我们精英化的技术团队为企业提供谷歌海外推广+外贸网站建设+网站维护运营+Google SEO优化+社交营销为您提供一站式海外营销服务。