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 相关文章推荐
通过html表格发电子邮件
Oct 09 PHP
PHP中一个控制字符串输出的函数
Oct 09 PHP
Windows2003 下 MySQL 数据库每天自动备份
Dec 21 PHP
个人站长制做网页常用的php代码
Mar 03 PHP
dede全站URL静态化改造[070414更正]
Apr 17 PHP
PHP中数组的三种排序方法分享
May 07 PHP
初步介绍PHP扩展开发经验分享
Sep 06 PHP
php获取根域名方法汇总
Oct 28 PHP
PHP中round()函数对浮点数进行四舍五入的方法
Nov 19 PHP
Symfony2安装第三方Bundles实例详解
Feb 04 PHP
PHP仿tp实现mvc框架基本设计思路与实现方法分析
May 23 PHP
实例分析10个PHP常见安全问题
Jul 09 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&MYSQL留言板源码
2020/07/19 PHP
php include加载文件两种方式效率比较
2010/08/08 PHP
PHP实现的简单路由和类自动加载功能
2018/03/13 PHP
php中isset与empty函数的困惑与用法分析
2019/07/05 PHP
php模拟post提交请求调用接口示例解析
2020/08/07 PHP
HTA版JSMin(省略修饰语若干)基于javascript语言编写
2009/12/24 Javascript
JavaScript的public、private和privileged模式
2009/12/28 Javascript
jQuery Validation插件remote验证方式的Bug解决
2010/07/01 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
jQuery插件kinMaxShow扩展效果用法实例
2015/05/04 Javascript
jquery实现多次上传同一张图片
2017/01/09 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
Axios学习笔记之使用方法教程
2017/07/21 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
vue小白入门教程
2018/04/02 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
vue实现移动端触屏拖拽功能
2020/08/21 Javascript
手把手教你实现 Promise的使用方法
2020/09/02 Javascript
基于vue-simple-uploader封装文件分片上传、秒传及断点续传的全局上传插件功能
2021/02/23 Vue.js
简单的Python的curses库使用教程
2015/04/11 Python
介绍Python中的fabs()方法的使用
2015/05/14 Python
python itchat实现微信自动回复的示例代码
2017/08/14 Python
Django查询数据库的性能优化示例代码
2017/09/24 Python
Python自定义函数实现求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python实现微信小程序自动回复
2018/09/10 Python
对python生成业务报表的实例详解
2019/02/03 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
IE兼容css3圆角的实现代码
2011/07/21 HTML / CSS
联想台湾官网:Lenovo TW
2018/05/09 全球购物
介绍下java.util.Arrays类
2012/10/16 面试题
应用心理学个人求职信范文
2013/12/11 职场文书
软件毕业生个人鉴定
2014/03/03 职场文书
建筑公司员工自我鉴定
2014/04/08 职场文书
父母寄语大全
2014/04/12 职场文书
国际语言毕业生求职信
2014/07/08 职场文书
通知函格式范文
2015/04/27 职场文书