lavarel数据库查找别名操作
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(),
lavarel数据库查找别名操作的更多相关文章
- laravel基础课程---13、数据库基本操作2(lavarel数据库操作和tp对比)
laravel基础课程---13.数据库基本操作2(lavarel数据库操作和tp对比) 一.总结 一句话总结: 非常非常接近:也是分为两大类,原生SQL 和 数据库链式操作 学习方法:使用时 多看手 ...
- MySQL数据库(3)_MySQL数据库表记录操作语句
附: MYSQL5.7版本sql_mode=only_full_group_by问题 .查询当前sql_mode: select @@sql_mode .查询出来的值为: set @@sql_mode ...
- 怎样加快master数据库的写操作?分表原则!将表水平划分!或者添加写数据库的集群
1.怎样加快master数据库的写操作?分表原则!将表水平划分!减少表的锁定时间!!! 或者或者添加写数据库的集群!!!或者添加写数据库的集群!!! 2.既然分表了,就一定要注意分表的规则!要在代码层 ...
- mysql 数据库必备命令操作,入门练习一下
mysql 数据库必备命令操作 show databases: 查看所有的数据库: create database jfedu: 创建名为jfedu数据库: use nihao: 进入jfedu数据库 ...
- Oracle数据库查找持有锁的SQL语句,而不是请求锁的SQL语句(原创)
Oracle数据库查找持有锁的SQL语句,而不是请求锁的SQL语句 查找活动的事务以及活动事务关联的会话信息 select s.sid 会话ID, s.serial# 会话序列号, s.usernam ...
- MySQL数据库的常见操作(七)
MySQL数据库的常见操作 1.创建数据库 2.创建重名的数据库以及如何查看警告信息 3.设置数据库的编码方式(默认为utf8) 4.修改和查看数据库的编码方式 5.删除数据库 6.6.删除已经删除了 ...
- nodejs 进阶:封装所有对数据库的常用操作
//这个模块里面封装了所有对数据库的常用操作 var MongoClient = require('mongodb').MongoClient; var settings = require(&quo ...
- python操作mysql数据库的相关操作实例
python操作mysql数据库的相关操作实例 # -*- coding: utf-8 -*- #python operate mysql database import MySQLdb #数据库名称 ...
- MySQL数据库定义与操作语言
文章为作者原创,未经许可,禁止转载. -Sun Yat-sen University 冯兴伟 实验1.1 数据库定义 (1)实验目的 理解和掌握数据库DDL语言,能够熟练地使用SQL DDL语句 ...
随机推荐
- Oracle学习笔记:ASCII码转换(chr和ascii函数)
今天get到一个骚操作,通过ascii码转换之后来进行互换编码的. select chr(ascii('f') + ascii('m') - ascii('a')) from dual; 有必要对as ...
- C#/.net 通过js调用系统相机进行拍照,图片无损压缩后进行二维码识别
这两天撸了一个需求,通过 JS 调用手机后置相机,进行拍照扫码.前台实现调用手机相机,然后截取图片并上传到后台的功能.后台接收传过来的图片后,通过调用开源二维码识别库 ZXing 进行二维码数据解析 ...
- js的一些兼容融性问题
1.非行内样式获取 高级浏览器 getComputedStyle(obox.false)//获取所有属性 ie浏览器 box.currentStyle//获取所有属性 兼容写法 function ge ...
- 浏览器本质上是解析器javascript
浏览器本质上是解析器.用于将符合W3C的标记序列解析并还原到编码人员希望用户看到的呈现状态.实际上,Word本身也可以看作是一个文档文件浏览器,acdsee是一个图像文件解析器(浏览器).HTML文件 ...
- CentOS 6.10 系统安装
本章内容: CentOS 6.10 的安装 一.安装光盘,选择 Install or upgrade an existing system 二.选择 skip 跳过光盘检查 三.选择 Next 四.选 ...
- 01_日志采集框架Flume简介及其运行机制
离线辅助系统概览: 1.概述: 在一个完整的大数据处理系统中,除了hdfs+mapreduce+hive组成分析系统的核心之外,还需要数据采集.结果数据导出. 任务调度等不可或缺的辅助系统,而这些辅助 ...
- golang shell 交叉编译
#!/usr/bin/env bash set -e uname_s=`uname -s | awk '{print tolower($0)}'` uname_m=`uname -m` timeTag ...
- PAT乙级1037
题目链接 https://pintia.cn/problem-sets/994805260223102976/problems/994805284923359232 题解 还算简单,就是模拟我们在生活 ...
- iview 表单验证不通过问题?
项目需要,需要怂iview..使用一段时间感觉跟elementUI用起来差不多很方便.使用过程中遇到表单验证问题,如何避免在验证过程中偶尔出现验证不通过的异常情况? <1>:给 <F ...
- Java查漏补缺
1.自动转换按从低到高的顺序转换.不同类型数据间的优先关系如下: 低 ---------------------------------------------> 高 byte,short,ch ...