怎么解决Laravel关联查询返回错误id的问题
发表于:2025-02-21 作者:千家信息网编辑
千家信息网最后更新 2025年02月21日,这篇文章主要介绍了怎么解决Laravel关联查询返回错误id的问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么解决Laravel关联查询返回错误id的问题文章都会有
千家信息网最后更新 2025年02月21日怎么解决Laravel关联查询返回错误id的问题
这篇文章主要介绍了怎么解决Laravel关联查询返回错误id的问题的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么解决Laravel关联查询返回错误id的问题文章都会有所收获,下面我们一起来看看吧。
在 Laravel Eloquent 中使用 join 关联查询,如果两张表有名称相同的字段,如 id,那么它的值会默认被后来的同名字段重写,返回不是期望的结果。例如以下关联查询:
PHP
$priority = Priority::rightJoin('touch', 'priorities.touch_id', '=', 'touch.id') ->where('priorities.type', 1) ->orderBy('priorities.total_score', 'desc') ->orderBy('touch.created_at', 'desc') ->get();
$priority = Priority::rightJoin('touch', 'priorities.touch_id', '=', 'touch.id') ->where('priorities.type', 1) ->orderBy('priorities.total_score', 'desc') ->orderBy('touch.created_at', 'desc') ->get();
priorities 和 touch 这两张表都有 id 字段,如果这样构造查询的话,返回的查询结果如图:
Laravel 关联查询返回错误的 id
这里 id 的值不是 priorities 表的 id 字段,而是 touch 表的 id 字段,如果打印出执行的 sql 语句:
select * from `priorities` right join `touch` on `priorities`.`touch_id` = `touch`.`id` where `priorities`.`type` = '1' order by `priorities`.`total_score` desc, `touch`.`created_at` desc
select * from `priorities` right join `touch` on `priorities`.`touch_id` = `touch`.`id` where `priorities`.`type` = '1' order by `priorities`.`total_score` desc, `touch`.`created_at` desc
查询结果如图:
使用 sql 查询的结果实际上是对的,另外一张表重名的 id 字段被默认命名为 id1,但是 Laravel 返回的 id 的值却不是图中的 id 字段,而是被重名的另外一张表的字段重写了。
解决办法是加一个 select 方法指定字段,正确的构造查询语句的代码:
PHP
$priority = Priority::select(['priorities.*', 'touch.name', 'touch.add_user']) ->rightJoin('touch', 'priorities.touch_id', '=', 'touch.id') ->where('priorities.type', 1) ->orderBy('priorities.total_score', 'desc') ->orderBy('touch.created_at', 'desc') ->get();
$priority = Priority::select(['priorities.*', 'touch.name', 'touch.add_user']) ->rightJoin('touch', 'priorities.touch_id', '=', 'touch.id') ->where('priorities.type', 1) ->orderBy('priorities.total_score', 'desc') ->orderBy('touch.created_at', 'desc') ->get();
关于"怎么解决Laravel关联查询返回错误id的问题"这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对"怎么解决Laravel关联查询返回错误id的问题"知识都有一定的了解,大家如果还想学习更多知识,欢迎关注行业资讯频道。
查询
字段
关联
错误
问题
结果
知识
内容
篇文章
而是
语句
如图
相同
代码
价值
办法
名称
实际
实际上
操作简单
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
如何通过客户编号找到数据库价格
网络安全专业学习视频
酒店数据库需要的列名
广州诺特软件开发福利怎样
数据库分表后查询分页
集中监控管理系统服务器启动不了
网络安全小知识儿童手抄报
提高网络安全意识 财政
成都科来网络技术有限公司招聘
网络安全舆情会议记录
我的世界破坏他人服务器违法吗
数学如何应用于软件开发
数据库 冗余字段
花店管理系统数据库创建的信息表
如何挂接数据库
苏州戴尔服务器配置对比
江苏上九网络技术公司
中山嵌入式软件开发流程多少钱
服务器工程师管理
企业邮箱软件开发
南京艾米兔互联网科技公司
如何在服务器上部署五福
云存储服务器咨询
粱俊杰 数据库公司
安其拉服务器排名
网络技术带来的变革
软件开发需要那些语言
黄浦区上门软件开发报价表
数据分析与软件开发
网络安全 身份验证