tp5.1 框架join方法用法实例分析
本文实例讲述了tp5.1 框架join方法用法。分享给大家供大家参考,具体如下:
JOIN
方法用于根据两个或多个表中的列之间的关系,从这些表中查询数据。join通常有下面几种类型,不同类型的join操作会影响返回的数据结果。
- INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行
- LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
- RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
- FULL JOIN: 只要其中一个表中存在匹配,就返回行
说明
join ( mixed join [, mixed $condition = null [, string $type = 'INNER']] ) leftJoin ( mixed join [, mixed $condition = null ] ) rightJoin ( mixed join [, mixed $condition = null ] ) fullJoin ( mixed join [, mixed $condition = null ] )
参数
join
要关联的(完整)表名以及别名
支持的写法:
- 写法1:[ '完整表名或者子查询'=>'别名' ]
- 写法2:'不带数据表前缀的表名'(自动作为别名)
- 写法2:'不带数据表前缀的表名 别名'
condition
关联条件。可以为字符串或数组, 为数组时每一个元素都是一个关联条件。
type
关联类型。可以为:`INNER`、`LEFT`、`RIGHT`、`FULL`,不区分大小写,默认为`INNER`。
返回值
模型对象
举例
Db::table('think_artist') ->alias('a') ->join('work w','a.id = w.artist_id') ->join('card c','a.card_id = c.id') ->select();
Db::table('think_user') ->alias('a') ->join(['think_work'=>'w'],'a.id=w.artist_id') ->join(['think_card'=>'c'],'a.card_id=c.id') ->select();
默认采用INNER JOIN 方式,如果需要用其他的JOIN方式,可以改成
Db::table('think_user') ->alias('a') ->leftJoin('word w','a.id = w.artist_id') ->select();
表名也可以是一个子查询
$subsql = Db::table('think_work') ->where('status',1) ->field('artist_id,count(id) count') ->group('artist_id') ->buildSql(); Db::table('think_user') ->alias('a') ->join([$subsql=> 'w'], 'a.artist_id = w.artist_id') ->select();
更多关于thinkPHP相关内容感兴趣的读者可查看本站专题:《ThinkPHP入门教程》、《thinkPHP模板操作技巧总结》、《ThinkPHP常用方法总结》、《codeigniter入门教程》、《CI(CodeIgniter)框架进阶教程》、《Zend FrameWork框架入门教程》及《PHP模板技术总结》。
希望本文所述对大家基于ThinkPHP框架的PHP程序设计有所帮助。
相关推荐
-
tp5.1框架数据库子查询操作实例分析
本文实例讲述了tp5.1框架数据库子查询操作.分享给大家供大家参考,具体如下: 首先构造子查询SQL,可以使用下面三种的方式来构建子查询. 使用fetchSql方法 fetchSql方法表示不进行查询而只是返回构建的SQL语句,并且不仅仅支持select,而是支持所有的CURD查询. $subQuery = Db::table('think_user') ->field('id,name') ->where('id', '>', 10) ->fetchSql(true) ->
-
tp5.1 框架查询表达式用法详解
本文实例讲述了tp5.1 框架查询表达式用法.分享给大家供大家参考,具体如下: 查询表达式 查询表达式支持大部分的SQL查询语法,也是ThinkPHP查询语言的精髓,查询表达式的使用格式: where('字段名','表达式','查询条件'); whereOr('字段名','表达式','查询条件'); 5.1还支持新的查询方法 whereField('表达式','查询条件'); whereOrField('表达式','查询条件'); Field使用字段的驼峰命名方式. 表达式不分大小写,支持的查询
-
TP5框架安全机制实例分析
本文实例讲述了TP5框架安全机制.分享给大家供大家参考,具体如下: 防止sql注入 1.查询条件尽量使用数组方式,具体如下: $wheres = array(); $wheres['account'] = $account; $wheres['password'] = $password; $User->where($wheres)->find(); 2.如果必须使用字符串,建议使用预处理机制,具体如下: $User = D('UserInfo'); $User->where('acco
-
tp5.1 框架路由操作-URL生成实例分析
本文实例讲述了tp5.1 框架路由操作-URL生成.分享给大家供大家参考,具体如下: ThinkPHP支持路由URL地址的统一生成,并且支持所有的路由方式,以及完美解决了路由地址的反转解析,无需再为路由定义和变化而改变URL生成. 如果你开启了路由延迟解析,需要生成路由映射缓存才能支持全部的路由地址的反转解析. URL生成使用 \think\facade\Url::build() 方法或者使用系统提供的助手函数url(),参数一致: Url::build('地址表达式',['参数'],['URL
-
tp5.1 框架数据库高级查询技巧实例总结
本文实例讲述了tp5.1 框架数据库高级查询技巧.分享给大家供大家参考,具体如下: 快捷查询 快捷查询方式是一种多字段相同查询条件的简化写法,可以进一步简化查询条件的写法,在多个字段之间用|分割表示OR查询,用&分割表示AND查询,可以实现下面的查询,例如: Db::table('think_user') ->where('name|title','like','thinkphp%') ->where('create_time&update_time','>',0) -&
-
PHP tp5中使用原生sql查询代码实例
注意事项: 1.先在database.php中配置好数据库 2.只要是数据库操作必须引用 use/think/Db;严格区分大小写. 下面是方法: public function hello5() { //所有查询必须 use/think/Db; /* 1 配置数据库 * 2 使用DB 命名空间 * */ /****************tp5中使用原生语句*******************/ //query 用于查询 其他的用execute // 插入记录 // $result = Db
-
tp5.1 框架数据库常见操作详解【添加、删除、更新、查询】
本文实例讲述了tp5.1 框架数据库常见操作.分享给大家供大家参考,具体如下: tp5.1--数据库添加操作 使用 Db 类的 insert方法向数据库提交数据 $data = ['foo' => 'bar', 'bar' => 'foo']; Db::name('user')->insert($data); insert方法添加数据成功返回添加成功的条数,通常情况返回 1 或者使用data方法配合insert使用. $data = ['foo' => 'bar', 'bar' =
-
TP5框架实现自定义分页样式的方法示例
本文实例讲述了TP5框架实现自定义分页样式的方法.分享给大家供大家参考,具体如下: 1. 在extend\目录下创建page目录,在page目录下创建Page.php文件,将以下代码放入文件中. <?php namespace page; use think\Paginator; class Page extends Paginator { //首页 protected function home() { if ($this->currentPage() > 1) { return &q
-
tp5.1 框架join方法用法实例分析
本文实例讲述了tp5.1 框架join方法用法.分享给大家供大家参考,具体如下: JOIN方法用于根据两个或多个表中的列之间的关系,从这些表中查询数据.join通常有下面几种类型,不同类型的join操作会影响返回的数据结果. INNER JOIN: 等同于 JOIN(默认的JOIN类型),如果表中有至少一个匹配,则返回行 LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行 RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行 FULL JOIN: 只要其中一个表中存在匹配
-
tp5.1 框架数据库-数据集操作实例分析
本文实例讲述了tp5.1 框架数据库-数据集操作.分享给大家供大家参考,具体如下: 数据库的查询结果也就是数据集,默认的配置下,数据集的类型是一个二维数组,我们可以配置成数据集类,就可以支持对数据集更多的对象化操作,需要使用数据集类功能,可以配置数据库的resultset_type参数如下: return [ // 数据库类型 'type' => 'mysql', // 数据库连接DSN配置 'dsn' => '', // 服务器地址 'hostname' => '127.0.0.1',
-
Python中threading模块join函数用法实例分析
本文实例讲述了Python中threading模块join函数用法.分享给大家供大家参考.具体分析如下: join的作用是众所周知的,阻塞进程直到线程执行完毕.通用的做法是我们启动一批线程,最后join这些线程结束,例如: for i in range(10): t = ThreadTest(i) thread_arr.append(t) for i in range(10): thread_arr[i].start() for i in range(10): thread_arr[i].joi
-
jquery中filter方法用法实例分析
本文实例讲述了jquery中filter方法用法.分享给大家供大家参考.具体分析如下: filter()方法将匹配元素集合缩减为匹配指定选择器的元素. filter方法中的参数可以为字符串值,包含供匹配当前元素集合的选择器表达式. 一.filter的参数类型可分为两种 1.传递选择器 $('a').filter('.external') 2.传递过滤函数 复制代码 代码如下: $('a').filter(function(index) { return $(this)
-
Django框架中间件(Middleware)用法实例分析
本文实例讲述了Django框架中间件(Middleware)用法.分享给大家供大家参考,具体如下: 1.面向切面编程 切点(钩子) 切点允许我们动态的在原有逻辑中插入一部分代码 在不修改原有代码的情况下,动态注入一部分代码 默认情况,不中断传播,切点会自动愈合(自动执行原有逻辑) 如果我们执行了中断操作(return,raise),没接上,会直接到程序结尾 五个切面:1.请求交给路由处理之前:2.请求交给视图处理之前:3.请求交给视图渲染后:4.渲染结果返回给模板之前:5.出现异常. 2.Dja
-
Flask框架工厂函数用法实例分析
本文实例讲述了Flask框架工厂函数用法.分享给大家供大家参考,具体如下: 在我们开始学习FLask的时候,创建应用的实例是用app=Flask(name)来做的,但是当我们想创建多个不同配置的实例的时候咋办呢,每次都要改是不是很烦,那为了减少麻烦,我们可以采用调用一个create_app函数来返回应用实例的方法,这就是工厂方法的大概意思啦! 文字说的再多也难以帮助理解,看代码示例: 1.最初的写法 #__init__.py里面创建实例,应用实例对象创建完再引入视图函数的模块,因为这时候视图函数
-
tp5(thinkPHP5框架)时间查询操作实例分析
本文实例讲述了tp5(thinkPHP5框架)时间查询操作.分享给大家供大家参考,具体如下: 在项目中 可能会遇到 跨月份进行查询 比如在 当输入201809 会获取当月的开始时间$start_month 和 结束时间 $end_month 会查询2018年9月份的数据 但是当其中的一个数据是在201809到201810 ,数据库的字段是 start_time end_time 这时候 Db::name("表名")->where('start_time','<= time'
-
Yii框架响应组件用法实例分析
本文实例讲述了Yii框架响应组件用法.分享给大家供大家参考,具体如下: 当我们的浏览器发送过来一个请求之后,在我们的操作里面对请求经过处理之后,我们的服务器也会把请求的结果打包成一个消息,然后把这个消息返还给浏览器,这个消息我们称之为响应.在我们的操作中,我们也可以对响应进行一些设置和处理.要处理我们的响应,我们需要先获得响应组件这个东西. $response = \Yii::$app->response; 有了这个响应组件之后,我们可以对响应消息进行一些设置了,比如设置响应的状态码. $res
-
Laravel框架验证码类用法实例分析
本文实例讲述了Laravel框架验证码类用法.分享给大家供大家参考,具体如下: 在Laravel中有很多图片验证码的库可以使用,本篇介绍其中之一:gregwar/captcha,这个库比较简单,在Laravel中比较常用.下面我们就来介绍下使用细节: 首先, composer.json中如下加入配置: "require": { ... "gregwar/captcha": "1.*" }, 然后,已成习惯的命令: composer update
-
Yii2.0框架behaviors方法使用实例分析
本文实例讲述了Yii2.0框架behaviors方法使用.分享给大家供大家参考,具体如下: 初学Yii2.0 学习路径:http://www.yii-china.com/ 经过各种学习,积累知识点: (1)控制器 behaviors 过滤数据需要引入如下文件 use yii\filters\AccessControl; use yii\filters\VerbFilter; 首先:什么是过滤器?过滤器就是对不同用户角色的控制: 如(游客->最普通的平民,用户->已经注册的用户,管理员->
随机推荐
- 深入挖掘Windows脚本技术第1/2页
- win2003防火墙导致ftp无法使用的解决方法
- java小数位的例子
- CodeIgniter针对数据库的连接、配置及使用方法
- 一个通过script自定义属性传递配置参数的方法
- docker快速入门教程
- Android App后台服务报告工作状态实例
- js数组去重的方法汇总
- MSSQL转MYSQL,gb2312转utf-8无乱码解决方法
- Linux中搭建FTP服务器的方法
- C#编写方法实例
- javascript的BOM
- node.js中的fs.createReadStream方法使用说明
- Java实现的决策树算法完整实例
- Python爬虫获取整个站点中的所有外部链接代码示例
- Vue单页应用引用单独的样式文件的两种方式
- 如何自定义hibernate validation注解示例代码
- ThinkPHP5.0框架控制器继承基类和自定义类示例
- SpringCloud重试机制配置详解
- centos7.4系统中yum源安装mysql 5.6