在上一篇教程中,我们通过查询构建器实现了简单的增删改查操作,而日常开发中,往往会涉及到一些更复杂的查询语句,比如连接查询、子查询、排序、分页、聚合查询等等,这一篇教程我们将围绕这些内容展开探讨。...你一定有过这样的经历,从数据库获取指定查询结果后,以主键 ID 值为键,以某个字段值为值构建关联数组,以前,你可能不得不遍历查询结果构建数组才能解决这样的问题,在 Laravel 中,我们只需在查询构建器上调用...null查询 NULL 查询就是判断某个字段是否为空的查询,Laravel 查询构建器为我们提供了 whereNull 方法用于实现该查询: DB::table('users')->whereNull(...,普通的 WHERE 查询也可以使用子查询,对应的方法是 whereSub,但是子查询的效率不如连接查询高,所以我们下面来探讨连接查询在查询构建器中的使用。...其它连接语句 上面三种是比较常见的连接语句,查询构建器没有提供单独的方法支持全连接,但是有对交叉连接的支持,对应的方法 crossJoin,使用方法如上面几种查询类似,这里不再单独演示了。
通过前面几篇教程的预热,我们已经连接上数据库,创建好了数据表,填充好了数据,接下来,就是在 Laravel 应用中实现对数据库的增删改查了。...Laravel 数据库功能的核心就是提供流式接口与数据库进行交互的查询构建器(Query Builder),支持 MySQL、Postgres、SQLite 和 SQL Server 等常见的数据库管理系统...DB 门面提供的方法执行原生的 SQL 语句,DB 门面既可以用于构建查询构建器方法链,也可以用于原生语句的执行。...使用查询构建器进行增删改查 接下来,我们开始介绍 Laravel 数据库功能的核心组件 —— 查询构建器(说是核心,是因为 Eloquent 模型的底层也是基于这个查询构建器),日常开发中,我们与数据库的交互基本都是直接或间接通过它来完成的...查询构建器也是基于 DB 门面的,只不过需要调用其提供的 table 方法构建一个基于指定数据表的查询构建器。
查询构造器 什么是查询构造器?...其实,查询构造器就相当于我们将原始 SQL 的操作进行了一次封装而已。而且,在模型中,其实内部调用的也是这个 查询构造器 。也就是说,查询构造器是介于 模型 和 原始语句 操作中间的一层。...查询构造器 了吧。...我们又发现了一个设计模式在 Laravel 框架中的应用,意外不意外,惊喜不惊喜! 连表查询 普通的连表查询的使用还是非常简单的,我也就不多说了,下面的代码中也有演示。...总结 关于 查询构造器 的其它使用在官方文档上都有,今天的文章就只是简单地介绍了一些常用的和独特的查询构造方式而已,毕竟我们的系列文章的主旨还是在分析源码上。
背景 公司有一批机器是内网的机器,无法访问外网,但是内网之间都是可以互通的,我们需要在这几台机器上部署环境,所以优先考虑使用docker容器,在本地写好dockerfile,构建好镜像,然后把镜像load...到目标机器上,所以我们需要先构建一层装有基础服务的镜像,然后在此基础上部署服务。...参数设置成no,优化ssh连接 RUN sed -i 's/UsePAM yes/UsePAM no/g' /etc/ssh/sshd_config # 修改root用户密码,这里密码为:devilf...开始构建 docker build -t='ssh-server:v1' ....注: 当我们使用普通用户执行docker相关的命令时,我们可能需要加上sudo才能执行,非常麻烦,所以我们可以把当前的用户添加到docker组里 sudo usermod -aG docker dogfei
$name.PHP_EOL; } 分块结果 #以一次 1000 条记录的块为单位检索整个 regions 表。...->orWhere('title', '=', 'Admin'); }) ->get(); #子查询...查询结果默认根据数据表的 created_at 字段进行排序 。...$users = DB::table('users')->offset(10)->limit(5)->get(); 条件语句 when #when 方法只有当第一个参数为 true 的时候才执行给定的闭包...'>', 100)->dd(); DB::table('users')->where('votes', '>', 100)->dump(); 参考 https://learnku.com/docs/laravel
连接数据库与原生查询 在 PHP 的学习中,数据库,也就是 MySQL 就像它的亲兄弟一样,永远没法分家。同理,在框架中,数据库相关的功能也是所有框架必备的内容。...Laravel 框架中的 DB 和 ORM 是两个不同的组件,关于 ORM 的概念,我们也将在相关的学习中了解到,但是现在我们先从简单的普通查询学起。...连接数据库配置 首先我们可以看下配置文件,在 Laravel 程序的 config 目录下,有一个 database.php 文件,其中有关于数据库的连接配置信息。...从 options 这个参数里面,我们可以看出,Laravel 默认使用的是 PDO 连接的数据库,我也没有研究在 Laravel 中如何使用 mysqli 进行连接,因为 PDO 确实已经是事实的连库标准了...当然,这也是为了框架的通用性,因为 PDO 也是通用的,在工厂中,我们可以看到 Postgres、SQLite、SQLServer 的连接器,如果使用 MySQLi 的话,可就没办法支持这些数据库了哦。
(把两次或多次的查询结果合并起来,要求查询的列数一致,推荐查询的对应的列类型一致,可以查询多张表,多次查询语句时如果列名不一样,则取 第一次的列名!...,右连接,内连接 现有表a有10条数据,表b有8条数据,那么表a与表b的笛尔卡积是多少?...join tb on ta.n1= ta.n2 3、内连接 查询结果是左右连接的交集,【即左右连接的结果去除null项后的并集(去除了重复项)】...mysql目前还不支持 外连接(即左右连接结果的并集,不去除null项) 语法:select n1,n2,n3 from ta inner join tb on ta.n1= ta.n2...a的列都存在,表b的数据只显示符合条件的项目 再如表b左连接表a,查询hot相同的数据 select a.
不用怕,今天给大家介绍一款名叫Mquery的工具,它带有友好的Web前端界面,可帮助大家迅速寻找到自己想要的恶意软件样本。...工具安装(Docker) 建议大家使用docker-compose来构建项目源码: git clone --recurse-submodules https://github.com/CERT-Polska...; 5.在Web服务器中搭建并设置Flask应用(webapp.py); 6.运行daemon.py(一个可以持续运行的脚本文件)。...工具使用 1.搭建环境,完成工具的安装; 2.在浏览器输入http://localhost:80/访问Web界面; 3.可在/var/lib/docker/volumes/mquery_samples/..._data中查询主机托管的索引文件,可使用“docker image inspect mquery_samples”命令对样本进行调试; 4.打开Web接口,选择“admin”标签,点击“Index /
mysql 的连接查询 内连接 左连接 右连接 全连接 首先创建两张表,一个student_table,一个salary。表名起的不是合乎情景,就这样吧。...内连接 现在我要进行一个内连接查询 select a....*,b.* from student_table a inner join salary b on a.id = b.sid; -- 内连接 得到的查询结果是 可以发现这个查询的显示就是根据id...然后再次进行一次全连接查询。...再来看一张图,分别对应内连接,左连接,右连接,全连接。完完全全明白。 用语雀写的文章,导出md后又导入了这个编辑器。对图片的显示做了处理。
带有省略号的分页器 目标与需求分析 假设总页数为 totalPage ,当前点击选中的页数为 clickPage 该值从 1 开始计算,总页数从大于 7 开始构造省略号的按钮。...= ['1',null,null,null,null,null,totalPage.toString()]; // 用来标记 clickPage 在数组中的索引位置 let index = 0;...'; } // clickPage 靠近第一页 clickPage-1 的差值在[0,2]之间 if (clickPage >= 1 && clickPage <= 3) { index =...== totalPage) { index = 3; } // 对数组中剩下的 null 元素进行页数的赋值 for (let i = 0; i < pageArray.length; i++...async function (e) { e.stopPropagation(); // 具体操作 refreshPage(pageOnClicked); // 每次重新选择分页就需要刷新分页器
def color(func): def red(*args): return '\033[31;1m%s\033[0m' % func...
带有参数的装饰器介绍 带有参数的装饰器就是使用装饰器装饰函数的时候可以传入指定参数,语法格式: @装饰器(参数,...)...正确写法: 在装饰器外面再包裹上一个函数,让最外面的函数接收参数,返回的是装饰器,因为@符号后面必须是装饰器实例。...# 添加输出日志的功能 def logging(flag): def decorator(fn): def inner(num1, num2): if...return decorator # 使用装饰器装饰函数 @logging("+") def add(a, b): result = a + b return result...小结 使用带有参数的装饰器,其实是在装饰器外面又包裹了一个函数,使用该函数接收参数,返回是装饰器,因为 @ 符号需要配合装饰器实例使用
本文链接:https://blog.csdn.net/luo4105/article/details/51397825 一直没有注重于sql这一块,现在的项目有大量的统计,报表,以前都是多表连接或者用...mybatis的延迟加载之类的,这几天心血来潮自己查了一下,发现了sql子查询这个好东西,感觉方便多了,速度也快多了(自我感觉)。...sql的子查询是可以在把数据查出来后在查出一条其他表的关联数据的一项(多项或者多条都会报错), 比如我们要查询用户表(user)并加上一个列(rolename)表示它代表的权限的名字,那么我们可以这么写...,里面是当前的时间,那么我们可以这么做 select *,(select rolename form role where roleId=user.roleId) as rolename,'2016-05...-13' as nowTime from user 这sql这几天真的写的蛮开心,哈哈
引言 鉴于上一章标题引起一些开发同学的巨大兴趣,本文我们接着此种行文方式继续我们的“Laravel宇宙”系列文章。...本文先不说模型,说说直接的查询构造器,说说怎么把数据筛选出来,这用的应该是最多的了。 代码时间 说起柔顺,你想起来什么?是撸代码,没错,就是它。...为了演示查询构造器的功能用法,我们直接使用 DB 门面创建 QueryBuilder 对象。...我们引入查询构造器,引入模型,就是为了摆脱繁杂的SQL语法,这里又传入原生语句,不提倡!...写在最后 本文轻描淡写地讲解了laravel中的查询构造器,讲了一个比较复杂的OR查询,因为使用闭包组装WHERE约束条件,所以会有些难以理解, 不过对比打印生成的SQL语句后,大家应该会豁然开朗!
无需更改存储在注册表编辑器中的键值即可为 Windows Accents 添加一些自定义。 WinPaletter 让您轻松自由地完成它。...调整 Win32 UI 元素的外观WinPaletter 的用户界面看起来设计得很好。当您首次下载并启动该程序时,该工具会在左侧显示所有选项,并在右侧显示您选择的选项的预览。...它们中的大多数允许您为特定的用户界面元素选择颜色。例如,您可以通过指定将鼠标悬停在“开始”按钮上时显示的特定颜色来更改操作中心、“开始”菜单或任务栏等元素的外观。支持多种颜色选择选项。...总之,免费软件程序简化了自由更改 Windows 元素颜色的过程,因为无需浏览注册表即可设置所需的首选项。话虽如此,Windows 设置的个性化菜单中的任何颜色更改都会自动更改自定义颜色。...Windows 11 使用颜色通过指示用户界面元素之间的视觉层次结构和结构来帮助用户专注于他们的任务。颜色是与上下文相适应的,主要用于提供微妙的增强用户交互、平静的基础,并仅在必要时强调重要的项目。
在整个前后端分离的项目中,后端的 API 接口至关重要,它是前端与后端之间进行沟通的媒介,如何构建一个 “好用” 的 API 接口,是需要我们后端人员好好思考的。 ...与控制台应用一样,Program 类中的 Main 方法是整个程序的入口,在这个方法中,我们将配置好的 IWebHostBuilder 对象,构建成 IWebHost 对象,并运行该 IWebHost...当我们简单了解了启动过程后,就可以配置我们的 Swagger 了。Swashbuckle.AspNetCore 帮我们构建好了使用 Swagger 的中间件,我们只需要直接使用即可。 ...2、带有版本控制的 API 接口实现 在请求的 API Url 中标明版本号,我不知道你第一时间看到这个实现方式,会想到什么,对于我来说,直接在路由信息中添加版本号不就可以了。。。...重新运行我们的项目,可以发现,文档显示的 Url 地址也已经正确了,自此,我们创建带有版本控制的 API 也就完成了。
在使用数据库查询语句时,单表的查询有时候不能满足项目的业务需求,在项目开发过程中,有很多需求都是要涉及到多表的连接查询,总结一下mysql中的多表关联查询 一,内连接查询 是指所有查询出的结果都是能够在连接的表中有对应记录的...t_dept d ON e.dept = d.id; 查询的结果如下: 其中,没有部门的人员和部门没有员工的部门都没有被查询出来,这就是内连接的特点,只查询在连接的表中能够有对应的记录,其中...e.dept = d.id是连接条件 二,左外连接查询 是指以左边的表的数据为基准,去匹配右边的表的数据,如果匹配到就显示,匹配不到就显示为null。...,如果右表没有记录对应的话就显示null 查询结果: 关键字是left outer join,等效于left join,在关联查询中,做外连接查询就是左连接查询,两者是一个概念 三,右外连接是同理的...: 如果在oracle中,直接就使用full outer join关键字连接两表就行了 五,自连接查询 自连接查询就是当前表与自身的连接查询,关键点在于虚拟化出一张表给一个别名 例如:查询员工以及他的上司的名称
运动类应用中,有一个很重要的模块就是计时器,当然,这个计时器不算复杂,只要有简单的开始、暂停以及复位功能即可。那么今天我们从Model层来看看这个计时器的逻辑实现。...,首先是定义了一个timeLabel,这个变量主要是为了在初始化时,直接将View层要显示的Label绑定进来,timer即为一个计时器,顺便定义了两个数组,用来记录时间,因为在真实环境中,可能有若干次暂停...timeNumber即为计时器中的总秒数,用Swift的didSet特性来监听属性的变化,当秒数发送变化时,讲秒数转化成时间的标准格式,并且赋值给timeString,同理,timeString也在属性发送变化时...代码很简单,当start时添加当前时间至数组里,并且启动定时器,暂停时,销毁定时器,添加暂停的时间进入暂停数组。继续和重置同理。那么我们来看定时器启动时,对应的selector做了哪些事情。...当我们第一次运行计时器时,获取的秒数就是开始时间与当前时间比对的差值。 而之后,就是跟暂停之后启动时间的对比了。
大家好,又见面了,我是你们的朋友全栈君。 连接查询 若一个查询同时涉及两个或两个以上的表,则称之为连接查询。...连接查询是数据库中最最要的查询, 包括: 1、等值连接查询 2、自然连接查询 3、非等值连接查询 4、自身连接查询 5、外连接查询 6、复合条件查询 等值与非等值连接查询...,StudyWHERE Student.Sno=Study.Sno 结果: 自身连接查询:当查询的结果涉及同一个表中两个或以上的列时,考虑用自身连接查询 例2:查询每一门课的间接先行课(即先行课...查询结果: 外连接查询: 分为左外连接,右外连接, 左外连接:根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,找不到匹配的,用null填充 右连接:根据右表的记录,在被连接的左表中找出符合条件的记录与之匹配...嵌套查询又称子查询,是指在父查询的where条件语句中再插入一个子查询语句,连接查询都可以用子查询完成,反之不然。
领取专属 10元无门槛券
手把手带您无忧上云