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程序设计有所帮助。

(0)

相关推荐

  • 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; 首先:什么是过滤器?过滤器就是对不同用户角色的控制: 如(游客->最普通的平民,用户->已经注册的用户,管理员->

随机推荐