php的lavarel框架中join和orWhere的用法


Posted in PHP onDecember 28, 2020

Laravel是一个开源PHP框架,功能强大且易于理解。它遵循模型 - 视图 - 控制器设计模式(MVC)。Laravel重用了不同框架的现有组件,这有助于创建Web应用程序。这样设计的Web应用程序更加结构化和实用。

Laravel框架的主要特点:

1.模块化包装

2.依赖管理器完全基于composer

3.精湛的自动加载器

4.优雅的ORM

5.查询构建器作为潜在的ORM替代

6.PostgreSQL,MySQL,SQL Server平台支持您的数据库

7.简化的叶片模板引擎

8.比以前更快的自动化

9.内置身份验证机制和缓存机制

10.一流的路由功能和选项

11.无与伦比的质量会话控制

12.IO功能

13.Artisan命令-d或示例代码行接口

注:Composer是一个包含所有依赖项和库的工具。它允许用户创建与所提到的框架相关的项目(例如,Laravel安装中使用的项目)。借助Composer可以轻松安装第三方库。所有依赖项都在composer.json文件中记录,该文件放在源文件夹中。

下面开始今天的正文。

1. 前景题要:

在一个项目中,我遇到了需要联表查询的情况,同时联表之后需要通过一个关键词来筛选出对应的数据,就比如我这里需要对角色名字、用户名称、电话这几个字段,通过传入的一个keyword字段进行筛选。

2. 问题分析:

此时我需要把用户表联系上我们的订单表,订单表中有user_id的字段,从而可以得到订单的用户名称,这里首先讲一下join(联表)的用法。
常用的有三种join()、leftJoin()、rightJoin(),分别是内连接、左连接、右连接.

内连接:在两张表进行连接查询时,只保留两张表中完全匹配的结果集。即两张表的交集。
左连接:在两张表进行连接查询时,会返回左表所有的行,即使在右表中没有匹配的记录。即左表中存在的数据对应在右表中不存在,依旧会返回左表中的数据。
右连接:在两张表进行连接查询时,会返回右表所有的行,即使在左表中没有匹配的记录。与左连接恰好相反。

接着需要写查询的条件语句,我们首先 第一步需要查询有效的订单,其次第二步才是根据传入的keyword进行筛选,此处在最开始的情况下我是直接使用where和orWhere混合进行查询,但遇到了总是会有些查询条件未被包含进去,此处我查了相关资料才弄明白,我们此处可以将利用keyword筛选的查询写成一个闭包,从而不与其他where语句产生相互的影响。

3. 解决方案:

注:orWhere如果不用闭包的形式写很容易写成分开的查询条件

$order_res = Order::leftJoin('user', 'order.user_id', '=', 'user.id')->select('order.*', 'user.title')//此处只是将有用的信息选择在联表中。
->where('state', '=', 1) //首先就是将有效的订单筛选出来。
->where(function($query) use ($keyword){//再在此闭包中根据keyword关键词来进行筛选。
	$query->where('order.mobile', 'like', '%'.$keyword.'%')
		 ->orWhere('user.title', 'like', "%{$keyword}%")//此处用了两个orWhere查询,都是or的关系,会将三种条件任意一个满足的数据筛选出来。
		 ->orWhere('order.character_title', 'like', "%{$keyword}%");
});

到此这篇关于php的lavarel框架中join和orWhere的用法的文章就介绍到这了,更多相关php lavarel框架join和orWhere的用法内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
新闻分类录入、显示系统
Oct 09 PHP
php下判断数组中是否存在相同的值array_unique
Mar 25 PHP
记录PHP错误日志 display_errors与log_errors的区别
Oct 09 PHP
解析php常用image图像函数集
Jun 24 PHP
用Zend Studio+PHPnow+Zend Debugger搭建PHP服务器调试环境步骤
Jan 19 PHP
PHP数学运算函数大汇总(经典值得收藏)
Apr 01 PHP
深入浅出讲解:php的socket通信原理
Dec 03 PHP
浅谈Laravel中的一个后期静态绑定
Aug 11 PHP
PHP基于堆栈实现的高级计算器功能示例
Sep 15 PHP
PHP使用phpunit进行单元测试示例
Sep 23 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
PHP使用gearman进行异步的邮件或短信发送操作详解
Feb 27 PHP
php中yar框架实例用法讲解
Dec 27 #PHP
php中数组最简单的使用方法
Dec 27 #PHP
用Laravel轻松处理千万级数据的方法实现
Dec 25 #PHP
PHP操作Redis常用命令的实例详解
Dec 23 #PHP
php中yii框架实例用法
Dec 22 #PHP
php swoft框架实例用法
Dec 22 #PHP
PHP变量的作用范围实例讲解
Dec 22 #PHP
You might like
php定时计划任务的实现方法详解
2013/06/06 PHP
解析php 版获取重定向后的地址(代码)
2013/06/26 PHP
CodeIgniter框架提示Disallowed Key Characters的解决办法
2014/04/21 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
php随机显示指定文件夹下图片的方法
2015/07/13 PHP
关于取不到由location.href提交而来的上级页面地址的解决办法
2009/07/30 Javascript
JQuery实现table行折叠效果以JSON做数据源
2014/05/26 Javascript
浅谈Node.js中的定时器
2015/06/18 Javascript
在微信、支付宝、百度钱包实现点击返回按钮关闭当前页面和窗口的方法
2016/08/05 Javascript
Bootstrap模态框(Modal)实现过渡效果
2017/03/17 Javascript
ES6深入理解之“let”能替代”var“吗?
2017/06/28 Javascript
如何利用@angular/cli V6.0直接开发PWA应用详解
2018/05/06 Javascript
vue引入js数字小键盘的实现代码
2018/05/14 Javascript
原生js实现下拉框选择组件
2021/01/20 Javascript
Python实现115网盘自动下载的方法
2014/09/30 Python
Python中转换角度为弧度的radians()方法
2015/05/18 Python
wxPython定时器wx.Timer简单应用实例
2015/06/03 Python
Windows中安装使用Virtualenv来创建独立Python环境
2016/05/31 Python
python 性能优化方法小结
2017/03/31 Python
Python 使用PIL中的resize进行缩放的实例讲解
2018/08/03 Python
python3实现多线程聊天室
2018/12/12 Python
Python实现的多进程拷贝文件并显示百分比功能示例
2019/04/09 Python
django框架ModelForm组件用法详解
2019/12/11 Python
将tensorflow模型打包成PB文件及PB文件读取方式
2020/01/23 Python
详解基于Jupyter notebooks采用sklearn库实现多元回归方程编程
2020/03/25 Python
Python 字符串池化的前提
2020/07/03 Python
最耐用行李箱,一箱永流传:Briggs & Riley(全球终身保修)
2017/12/07 全球购物
英国玛莎百货美国官网:Marks & Spencer美国
2018/11/06 全球购物
北美最大的手工艺品零售商之一:Michaels Stores
2019/02/27 全球购物
会计专业推荐信
2013/10/29 职场文书
股权收购意向书
2014/04/01 职场文书
2014年学校卫生工作总结
2014/11/20 职场文书
2019财务转正述职报告
2019/06/27 职场文书
NodeJs内存占用过高的排查实战记录
2021/05/10 NodeJs
【海涛教你打DOTA】黑鸟第一视角解说
2022/04/01 DOTA
MySQL数据库实验之 触发器和存储过程
2022/06/21 MySQL