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 相关文章推荐
最令PHP初学者头痛的十四个问题
Jul 12 PHP
基于asp+ajax和数据库驱动的二级联动菜单
May 06 PHP
PHP操作xml代码
Jun 17 PHP
php下网站防IP攻击代码,超级实用
Oct 24 PHP
关于PHP堆栈与列队的学习
Jun 21 PHP
注意:php5.4删除了session_unregister函数
Aug 05 PHP
yii实现使用CUploadedFile上传文件的方法
Dec 28 PHP
浅谈php数组array_change_key_case() 函数和array_chunk()函数
Oct 22 PHP
php使用PDO获取结果集的方法
Feb 16 PHP
php实现保存周期为1天的购物车类
Jul 07 PHP
php与阿里云短信接口接入操作案例分析
May 27 PHP
laravel7学习之无限级分类的最新实现方法
Sep 30 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
德劲1103二次变频版的打磨
2021/03/02 无线电
php下关于Cannot use a scalar value as an array的解决办法
2010/08/08 PHP
php 数组的指针操作实现代码
2011/02/08 PHP
如何使用php等比例缩放图片
2016/10/12 PHP
在IIS下安装PHP扩展的方法(超简单)
2017/04/10 PHP
PHP简单获取上月、本月、近15天、近30天的方法示例
2017/07/03 PHP
PHP实现新型冠状病毒疫情实时图的实例
2020/02/04 PHP
JQuery 构建客户/服务分离的链接模型中Table中的排序分析
2010/01/22 Javascript
Jquery从头学起第四讲 jquery入门教程
2010/08/01 Javascript
JS 在指定数组中随机取出N个不重复的数据
2014/06/10 Javascript
javascript获取元素偏移量的方法有哪些
2014/06/24 Javascript
javascript中定义类的方法详解
2015/02/10 Javascript
json传值以及ajax接收详解
2016/05/24 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
浅谈jquery的html方法里包含特殊字符的处理
2016/11/30 Javascript
javascript设计模式之单体模式学习笔记
2017/02/15 Javascript
利用ES6的Promise.all实现至少请求多长时间的实例
2017/08/28 Javascript
微信小程序实现页面跳转传值的方法
2017/10/12 Javascript
jquery 实现拖动文件上传加载进度条功能
2018/03/18 jQuery
浅谈Node新版本13.2.0正式支持ES Modules特性
2019/11/25 Javascript
Antd的table组件表格的序号自增操作
2020/10/27 Javascript
Django视图和URL配置详解
2018/01/31 Python
python+opencv实现阈值分割
2018/12/26 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
python 扩展print打印文件路径和当前时间信息的实例代码
2019/10/11 Python
Pytorch中的自动求梯度机制和Variable类实例
2020/02/29 Python
Python调用C语言程序方法解析
2020/07/07 Python
python -v 报错问题的解决方法
2020/09/15 Python
英国领先的男士服装和时尚零售商:Burton
2017/01/09 全球购物
Topshop美国官网:英国快速时尚品牌
2019/05/16 全球购物
荷兰时尚精品店:Labels Fashion
2020/03/22 全球购物
自荐书范文范例
2014/02/13 职场文书
《云房子》教学反思
2014/04/20 职场文书
公司租房协议书
2014/10/14 职场文书
消防安全月活动总结
2015/05/08 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android