解决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()。

相关文章

  • 摘自织梦CMS的HTTP文件下载类

    摘自织梦CMS的HTTP文件下载类

    这篇文章主要介绍了摘自织梦CMS的HTTP文件下载类,涉及php发送http请求、响应、传输等常用操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-08-08
  • php实现网站留言板功能

    php实现网站留言板功能

    这篇文章主要介绍了php实现网站留言板功能,主要仿照了畅言留言板和网易跟帖样式进行制作,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2015-11-11
  • php面向对象中的魔术方法中文说明

    php面向对象中的魔术方法中文说明

    这篇文章主要介绍了php面向对象中的魔术方法中文说明,明白这些方法才好写面向对象程序,需要的朋友可以参考下
    2014-03-03
  • PHPStudy hosts文件可能不存在或被阻止打开及同步hosts失败问题

    PHPStudy hosts文件可能不存在或被阻止打开及同步hosts失败问题

    这篇文章主要介绍了PHPStudy hosts文件可能不存在或被阻止打开,同步hosts失败,本文分步骤给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-05-05
  • PHP面向对象之事务脚本模式(详解)

    PHP面向对象之事务脚本模式(详解)

    下面小编就为大家带来一篇PHP面向对象之事务脚本模式(详解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • PHP PDO预处理语句及事务的使用

    PHP PDO预处理语句及事务的使用

    今天这篇文章,我们来简单的学习一下 PDO 中的预处理语句以及事务的使用,它们都是在 PDO 对象下的操作,而且并不复杂,简单的应用都能很容易地实现。只不过大部分情况下,大家都在使用框架,手写的机会非常少。
    2021-06-06
  • yii2学习教程之5种内置行为类详解

    yii2学习教程之5种内置行为类详解

    这篇文章主要给大家介绍了关于yii2学习教程之5种内置行为类的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用yii2具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
    2017-08-08
  • Apache无法自动跳转却显示目录的解决方法

    Apache无法自动跳转却显示目录的解决方法

    这篇文章主要为大家详细介绍了Apache无法自动跳转却显示目录的解决方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-07-07
  • php 网上商城促销设计实例代码

    php 网上商城促销设计实例代码

    前一篇文章讲的是购物车的设计,这篇来讲下关于促销的。支持的促销类似于,打折,买几赠几,满多少钱送礼品等等。用到策略模式
    2012-02-02
  • PHP5中GD库生成图形验证码(有汉字)

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

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

最新评论