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

 更新时间:2019年10月17日 09:27:22   作者:残月9217   我要评论
今天小编就为大家分享一篇解决laravel查询构造器中的别名问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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 调用百度sms来发送短信的实现示例

    php 调用百度sms来发送短信的实现示例

    这篇文章主要介绍了php 调用百度sms来发送短信的实现示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • windows下apache搭建php开发环境

    windows下apache搭建php开发环境

    本文详细介绍了在Windows2003下使用Apache2.2.21/PHP5.3.5/Mysql5.5.19/phpMyAdmin3.4.9搭建php开发环境,本文介绍的非常详细,需要的朋友快来学习吧
    2015-08-08
  • PHP5中GD库生成图形验证码(有汉字)

    PHP5中GD库生成图形验证码(有汉字)

    本文为大家介绍下利用PHP5中GD库生成图形验证码而且带有汉字,具体的实现思路及代码如下,有需求的朋友可以参考下,希望对大家学习php有所帮助
    2013-07-07
  • Laravel框架中VerifyCsrfToken报错问题的解决

    这篇文章主要给大家介绍了关于Laravel框架中VerifyCsrfToken报错问题的解决方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Laravel中Trait的用法实例详解

    Laravel中Trait的用法实例详解

    这篇文章主要介绍了Laravel中Trait的用法,结合实例形式详细描述了Trait的功能特性及在Laravel的相关使用技巧,需要的朋友可以参考下
    2016-03-03
  • php、java、android、ios通用的3des方法(推荐)

    php、java、android、ios通用的3des方法(推荐)

    下面小编就为大家带来一篇php、java、android、ios通用的3des方法(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-09-09
  • php多维数组去掉重复值示例分享

    php多维数组去掉重复值示例分享

    这篇文章主要介绍了php多维数组去掉重复值示例,需要的朋友可以参考下
    2014-03-03
  • PHP仿微信发红包领红包效果

    PHP仿微信发红包领红包效果

    最近项目开发要求实现红包功能,仿微信(不含留言),但只能使用余额发红包。下面小编给大家分享PHP仿微信发红包领红包效果,感兴趣的朋友一起看看吧
    2016-10-10
  • php利用array_search与array_column实现二维数组查找

    php利用array_search与array_column实现二维数组查找

    这篇文章主要介绍了php利用array_search与array_column实现二维数组查找,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-07-07
  • Yii2中DropDownList简单用法示例

    Yii2中DropDownList简单用法示例

    这篇文章主要介绍了Yii2中DropDownList简单用法,实例分析了DropDownList下拉列表的基本调用方法,需要的朋友可以参考下
    2016-07-07

最新评论