解决laravel查询构造器中的别名问题


Posted in PHP onOctober 17, 2019

Laravel框架对数据库的封装是比较完善的,用起来也比较方便。但之前有一个问题一直困扰着我,就是利用laravel作查询时。如果想给表名或是字段名起别名是比较麻烦的事。但翻阅它的文档不难发现,它提供了一个DB::raw()的方法给我们,利用这个方法,我们就可以轻松的实现对表的重命名。

问题还原:

一般的写法:DB::table('users')->select('id','username')->get();

这样写是一点问题没有的。

加别名的写法:DB::table('users as table1')->select('id')->get();

这样写也不会产生错误

我们尝试另一咱写法:DB::table('users as table1')->select('table1.id')->get();

这样写就报错了,但这种写法我们又是不能避免的,如我们要表users表进行自连接时,就必须要用到别名加点的方式去得到字段。这样问题就来了。

不着急,我们先看看这句话输出的SQL语句是什么样的。我们用laravel提供的一个方法toSql()去得到SQL语句

DB::table('usersas table1')->select('table1.id')->toSql();

结果为:select`ykttb_table1`.`id` from `ykttb_users` as `table1`

我们发现写table1.id时,laravel框架自动给我们加上了表前缀,很显然,这样的SQL语句得不到我们要的结果。

最后的尝试:DB::table('users astable1')->select(DB::raw('table1.id'))->get();

这样写就没错了,用上面的方法来输出SQL语句:select table1.id from `ykttb_users` as `table1`

这就是我们想要执行的SQL语句。

总结:在laravel中,给表起别名,直接写就可以;但在select语句中要用到表的别名来得到字段,我们就要在外面套一层DB::raw()。

PHP 相关文章推荐
phpMyadmin 用户权限中英对照
Apr 02 PHP
UCenter中的一个可逆加密函数authcode函数代码
Jul 20 PHP
PHP利用REFERER根居访问来地址进行页面跳转
Sep 28 PHP
php绘制圆形的方法
Jan 24 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
php获取文件类型和文件信息的方法
Jul 10 PHP
PHP匿名函数和use子句用法实例
Mar 16 PHP
PHP性能优化大全(php.ini)
May 20 PHP
PHP简单判断手机设备的方法
Aug 23 PHP
Yii2 queue的队列使用详解
Jul 19 PHP
Laravel关系模型指定条件查询方法
Oct 10 PHP
浅谈laravel框架与thinkPHP框架的区别
Oct 23 PHP
Laravel Eloquent ORM 实现查询表中指定的字段
Oct 17 #PHP
浅谈laravel5.5 belongsToMany自身的正确用法
Oct 17 #PHP
解决laravel5.4下的group by报错的问题
Oct 16 #PHP
laravel ORM关联关系中的 with和whereHas用法
Oct 16 #PHP
laravel 模型查询按照whereIn排序的示例
Oct 16 #PHP
解决Laravel无法使用COOKIE和SESSION的问题
Oct 16 #PHP
laravel 使用事件系统统计浏览量的实现
Oct 16 #PHP
You might like
《逃离塔科夫》——“萌新劝退,老手自嗨”的硬核FPS游戏
2020/04/03 其他游戏
长波知识介绍
2021/03/01 无线电
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP微信刮刮卡 附微信接口
2016/07/22 PHP
thinkPHP中配置的读取与C方法详解
2016/12/05 PHP
PHP实现验证码校验功能
2017/11/16 PHP
js 居中漂浮广告
2010/03/21 Javascript
JQuery中each()的使用方法说明
2010/08/19 Javascript
jquery里的正则表达式说明
2011/08/03 Javascript
文本框(input)获取焦点(onfocus)时样式改变的示例代码
2014/01/10 Javascript
Javascript中的getUTCDay()方法使用详解
2015/06/10 Javascript
深入理解js中this的用法
2016/05/28 Javascript
Js删除数组中某一项或几项的几种方法(推荐)
2016/07/27 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
vue+axios 前端实现的常用拦截的代码示例
2018/08/23 Javascript
详解如何在vue项目中使用layui框架及采坑
2019/05/05 Javascript
教你如何用Node实现API的转发(某音乐)
2019/09/20 Javascript
详解Typescript 内置的模块导入兼容方式
2020/05/31 Javascript
vue中解决chrome浏览器自动播放音频和MP3语音打包到线上的实现方法
2020/10/09 Javascript
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
Python PyQt5 Pycharm 环境搭建及配置详解(图文教程)
2019/07/16 Python
python Django 创建应用过程图示详解
2019/07/29 Python
pandas条件组合筛选和按范围筛选的示例代码
2019/08/26 Python
基于Python爬取素材网站音频文件
2020/10/21 Python
python 基于DDT实现数据驱动测试
2021/02/18 Python
汉森冲浪板:Hansen Surfboards
2018/05/19 全球购物
学生会竞选自荐信
2013/10/12 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
中式结婚主持词
2014/03/14 职场文书
初中三好学生自我鉴定
2014/04/07 职场文书
工作鉴定评语
2014/05/04 职场文书
十佳家长事迹材料
2014/08/26 职场文书
毕业设计论文评语
2014/12/31 职场文书
Go遍历struct,map,slice的实现
2021/06/13 Golang