lavarel数据库查找别名操作

一、总结

一句话总结:

当有表前缀的时候:DB::table('users as table1')->select(DB::raw('table1.id'))->get();

对应sql语句:select table1.id from `ykttb_users` as `table1`

没有表前缀的时候可以不用加那个DB::raw()方法

1、laravel中raw方法的作用是什么(比如 DB::table('users as table1')->select(DB::raw('table1.id'))->get();)?

执行原生sql用的:比如你可以在里面写 sum(a) as a,sum(b) as b

二、laravel查询构造器中别名的问题

转自或参考:laravel查询构造器中别名的问题
https://blog.csdn.net/u011771214/article/details/39553851

 

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 as table1')->select(DB::raw('table1.id'))->get();

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

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

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

 

最新文章

  1. CRUD查询
  2. JavaScript实现存储HTML字符串
  3. JavaWeb开发必过关-Servlet学习(一)
  4. 使用本地yum源
  5. 移动端页面使用rem来做适配
  6. PE文件结构整理
  7. codeforces 260 div2 A,B,C
  8. web从入门开始(7)-----css
  9. Shiro【授权过滤器、与ehcache整合、验证码、记住我】
  10. c语言之单链表的创建及排序
  11. SQL反模式学习笔记4 建立主键规范【需要ID】
  12. php输出语句有什么不同
  13. SpringCloud----熔断机制 -- 断路器hystrix
  14. Developing avb
  15. Java高级特性 第11节 JUnit 3.x和JUnit 4.x测试框架
  16. linux安装mysql5.7.19
  17. Python基础知识(五)
  18. javascript 易错知识点合集
  19. nginx代理websocket协议
  20. Mac SpotLight无法搜索

热门文章

  1. Outline 科学的上网
  2. SEO要点
  3. Apache httpclient的execute方法调试
  4. 【转】在 Delphi 中创建 Linux 守护程序(服务进程)
  5. pymysql_mysql密码重置方法,连接局域网数据库的解决办法
  6. 【leetcode】296.Best Meeting Point
  7. eclipse创建Maven Web项目以及无法修改Project Facets
  8. kubernetes之健康状态检测
  9. 客户端升级为select网路模型
  10. 08_Hive中的各种Join操作