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 面向对象实现代码
Nov 11 PHP
php设计模式 Singleton(单例模式)
Jun 26 PHP
thinkphp3.0 模板中函数的使用
Nov 13 PHP
PHP基础教程(php入门基础教程)一些code代码
Jan 06 PHP
PHP中time(),date(),mktime()区别介绍
Sep 28 PHP
php返回json数据函数实例
Oct 09 PHP
Laravel 5框架学习之Eloquent 关系
Apr 09 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
Jun 20 PHP
WordPress中的shortcode短代码功能使用详解
May 17 PHP
PHP+mysql+ajax轻量级聊天室实现方法详解
Oct 17 PHP
ThinkPHP 3.2.2实现事务操作的方法
May 05 PHP
thinkphp中的多表关联查询的实例详解
Oct 12 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
简单示例AJAX结合PHP代码实现登录效果代码
2008/07/25 PHP
php相当简单的分页类
2008/10/02 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
如何使用纯PHP实现定时器任务(Timer)
2015/07/31 PHP
PHP处理Ajax请求与Ajax跨域问题
2017/02/13 PHP
PHP实现图的邻接矩阵表示及几种简单遍历算法分析
2017/11/24 PHP
php+redis实现消息队列功能示例
2019/09/19 PHP
jQuery UI Datepicker length为空或不是对象错误的解决方法
2010/12/19 Javascript
js动态添加onload、onresize、onscroll事件(另类方法)
2012/12/26 Javascript
JavaScript事件委托用法分析
2015/01/24 Javascript
jquery+css实现的红色线条横向二级菜单效果
2015/08/22 Javascript
jquery加载单文件vue组件的方法
2017/06/20 jQuery
vue cli 3.0 使用全过程解析
2018/06/14 Javascript
如何利用vue+vue-router+elementUI实现简易通讯录
2019/05/13 Javascript
详解vue中使用axios对同一个接口连续请求导致返回数据混乱的问题
2019/11/06 Javascript
python实现sublime3的less编译插件示例
2014/04/27 Python
Python中的字符串类型基本知识学习教程
2016/02/04 Python
Python爬虫爬验证码实现功能详解
2016/04/14 Python
利用Python中SocketServer 实现客户端与服务器间非阻塞通信
2016/12/15 Python
Django2.1集成xadmin管理后台所遇到的错误集锦(填坑)
2018/12/20 Python
对Python 语音识别框架详解
2018/12/24 Python
pybind11和numpy进行交互的方法
2019/07/04 Python
简单了解python的一些位运算技巧
2019/07/13 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
2019/12/11 Python
使用python 对验证码图片进行降噪处理
2019/12/18 Python
Flask中sqlalchemy模块的实例用法
2020/08/02 Python
Python Request类源码实现方法及原理解析
2020/08/17 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
I.T中国官网:精选时尚设计师单品网购平台
2018/03/26 全球购物
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
2014年会策划方案
2014/05/11 职场文书
2015年领班工作总结
2015/04/29 职场文书
宇宙与人观后感
2015/06/05 职场文书
李强优秀员工观后感
2015/06/16 职场文书
秋季运动会加油词
2015/07/18 职场文书
企业培训简报范文
2015/07/20 职场文书