解决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 相关文章推荐
用PHP发电子邮件
Oct 09 PHP
php入门学习知识点五 关于php数组的几个基本操作
Jul 14 PHP
114啦源码(114la)不能生成地方房产和地方报刊问题4级页面0字节的解决方法
Jan 12 PHP
Php中文件下载功能实现超详细流程分析
Jun 13 PHP
php实现统计邮件大小的方法
Aug 06 PHP
PHP批量上传图片的具体实现方法介绍.
Feb 26 PHP
php计算当前程序执行时间示例
Apr 24 PHP
PHP技术开发微信公众平台
Jul 22 PHP
WordPress中缩略图的使用以及相关技巧
Nov 24 PHP
深入理解PHP中的empty和isset函数
May 26 PHP
PHP中spl_autoload_register()函数用法实例详解
Jul 18 PHP
php中的依赖注入实例详解
Aug 14 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
PHP学习笔记之一
2011/01/17 PHP
php header Content-Type类型小结
2011/07/03 PHP
判断目标是否是window,document,和拥有tagName的Element的代码
2010/05/31 Javascript
jQuery下实现等待指定元素加载完毕(可改成纯js版)
2013/07/11 Javascript
jquery easyui中treegrid用法的简单实例
2014/02/18 Javascript
实现前后端数据交互方法汇总
2015/04/07 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
2015/06/05 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
深入理解javascript函数参数与闭包
2016/12/12 Javascript
jQuery实现动态生成表格并为行绑定单击变色动作的方法
2017/04/17 jQuery
微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
2017/04/18 Javascript
利用jQuery异步上传文件的插件用法详解
2017/07/19 jQuery
vue返回上一页面时回到原先滚动的位置的方法
2018/12/20 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
解决微信授权成功后点击按返回键出现空白页和报错的问题
2020/06/08 Javascript
python实现zencart产品数据导入到magento(python导入数据)
2014/04/03 Python
零基础写python爬虫之爬虫的定义及URL构成
2014/11/04 Python
Python中subprocess的简单使用示例
2015/07/28 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python利用for循环打印星号三角形的案例
2020/04/12 Python
Python自动化操作实现图例绘制
2020/07/09 Python
Bootstrap 学习分享
2012/11/12 HTML / CSS
生产部主管岗位职责
2014/01/06 职场文书
家长给孩子的表扬信
2014/01/17 职场文书
市场营销求职信范文
2014/02/21 职场文书
读群众路线心得体会
2014/03/07 职场文书
数控机床专业自荐信
2014/05/19 职场文书
应届大学生自荐书
2014/06/17 职场文书
学校领导班子对照检查材料
2014/08/28 职场文书
学生考试舞弊检讨书
2015/01/01 职场文书
毕业生就业推荐表自我评价
2015/03/02 职场文书
工厂仓管员岗位职责
2015/04/01 职场文书
捐书仪式主持词
2015/07/04 职场文书
国庆节主题班会
2015/08/15 职场文书
2016年三八红旗手先进事迹材料
2016/02/26 职场文书