php的lavarel框架中join和orWhere的用法
发布:smiling 来源: PHP粉丝网 添加日期:2022-04-07 07:53:43 浏览: 评论:0
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}%");
- });
Tags: lavarel join orWhere
- 上一篇:php中yar框架实例用法讲解
- 下一篇:最后一页
相关文章
- ·解决在laravel中leftjoin带条件查询没有返回右表为NULL的问题(2022-01-04)
- ·Laravel 连接(Join)示例(2022-01-06)
- ·laravel高级的Join语法详解以及使用Join多个条件(2022-01-06)
- ·关于laravel 子查询 & join的使用(2022-01-06)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)