解决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来检测proxy
Oct 09 PHP
深入理解PHP之require/include顺序 推荐
Jan 02 PHP
选择PHP作为网站开发语言的原因分享
Jan 03 PHP
PHP 使用header函数设置HTTP头的示例解析 表头
Jun 17 PHP
php调用c接口无错版介绍
Mar 11 PHP
php使用timthumb生成缩略图的方法
Jan 22 PHP
yii2使用GridView实现数据全选及批量删除按钮示例
Mar 01 PHP
php实现的双色球算法示例
Jun 20 PHP
php连接MSsql server的五种方法总结
Mar 04 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
PHP设计模式之原型设计模式原理与用法分析
Apr 25 PHP
thinkPHP5框架接口写法简单示例
Aug 05 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/06/09 PHP
php curl的深入解析
2013/06/02 PHP
CI框架简单分页类用法示例
2020/06/06 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
javascript 带有滚动条的表格,标题固定,带排序功能.
2009/11/13 Javascript
jquery实现的鼠标拖动排序Li或Table
2014/05/04 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
jQuery学习笔记之Ajax用法实例详解
2015/12/01 Javascript
javascript实现计时器的简单方法
2016/02/21 Javascript
微信小程序 教程之数据绑定
2016/10/18 Javascript
javascript 中的事件委托详解
2016/10/25 Javascript
jquery.guide.js新版上线操作向导镂空提示jQuery插件(推荐)
2017/05/20 jQuery
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
vue检测对象和数组的变化分析
2018/06/30 Javascript
React中this丢失的四种解决方法
2019/03/12 Javascript
详解vuejs中执行npm run dev出现页面cannot GET/问题
2020/04/26 Javascript
vue单文件组件无法获取$refs的问题
2020/06/24 Javascript
Node.js 深度调试方法解析
2020/07/28 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
剖析Python的Tornado框架中session支持的实现代码
2015/08/21 Python
利用Python获取操作系统信息实例
2016/09/02 Python
一份python入门应该看的学习资料
2018/04/11 Python
python DataFrame转dict字典过程详解
2019/12/26 Python
python能否java成为主流语言吗
2020/06/22 Python
如何用python开发Zeroc Ice应用
2021/01/29 Python
前端水印的简单实现代码示例
2020/12/02 HTML / CSS
使用HTML和CSS实现的标签云效果(附demo)
2021/02/03 HTML / CSS
SmartBuyGlasses意大利:购买太阳镜、眼镜和隐形眼镜
2018/11/20 全球购物
法国体育用品商店:GO Sport
2019/10/23 全球购物
竞争上岗演讲稿
2014/01/05 职场文书
党员批评与自我批评
2014/02/12 职场文书
个人工作表现评语
2014/04/30 职场文书
广告设计专业毕业生自我鉴定
2014/09/27 职场文书
学生保证书格式
2015/02/27 职场文书
小学生心理健康活动总结
2015/05/08 职场文书