* [ ] 功能
* 根据两个或多个表中的列之间的关系关联,从这些表中查询数据
* 支持多次连贯调用
* [ ] join 方法参数
* 四个参数:
* $data,关联的表数组
* $type,关联类型,可选值有:
| 可选值 | 说明 |
| :---: | :---: |
| table | 连表,不需要关联条件,默认为 table |
| left | 左连接,需要关联条件 |
| right | 右连接,需要关联条件 |
| inner | 内连接,等值连接,需要关联条件 |
* $where,关联条件,默认为空数组
* $orand,关联条件的关系,默认为 and
* 场景:
user 数据库
user_class 表
| class_id | class_name |
| :---: | :---: |
| 1 | 一班 |
| 2 | 二班 |
| 3 | 三班 |
user_account 表
| uid | username | class_id |
| :---: | :---: | :---: |
| 1 | 张三 | 1 |
| 2 | 李四 | 2 |
| 3 | 隔壁老王 | 1 |
* 用法一:关联表不写别名,那么关联表就要写完整表名
~~~
// 关联表
$data = array(
'user_account',
'user_class',
);
// 关联类型
$type = 'left';
// 关联条件
$join_where = array(
'user_account.class_id[.=]' => 'user_class.class_id',
);
// 关联条件的关系
$orand = 'and';
// 查询条件
$where = array(
'user_class.class_name' => '二班',
);
// 关联查询
$data = mysql\User::join( $data, $type, $join_where, $orand )->where( $where )->select();
~~~
执行的 sql 语句:
~~~
select * from user_account left join user_class on user_account.class_id = user_class.class_id where user_class.class_name = '二班'
~~~
查询结果:
~~~
array(
array(
'uid' => 2,
'username' => '李四',
'class_id' => 2,
'class_name' => '二班',
),
);
~~~
* 用法二:关联表写别名,表名不用带表前缀
~~~
// 关联表
// 定义表别名
// user_account 定义别名为 a
// user_class 定义别名为 c
$data = array(
'a[true]' => 'user_account',
'c[true]' => 'user_class',
);
// 关联类型
$type = 'left';
// 关联条件
$join_where = array(
'a.class_id[.=]' => 'c.class_id',
);
// 关联条件的关系
$orand = 'and';
// 查询条件
$where = array(
'c.class_name' => '二班',
);
// 关联查询
$data = mysql\User::join( $data, $type, $join_where, $orand )->where( $where )->select();
~~~
执行的 sql 语句:
~~~
select * from user.user_account as a left join user.user_class as c on a.class_id = c.class_id where c.class_name = '二班';
~~~
查询结果:
~~~
array(
array(
'uid' => 2,
'username' => '李四',
'class_id' => 2,
'class_name' => '二班',
),
);
~~~
- 开始使用
- 配置文件
- 路由模式
- AutoLoad类
- 启动文件
- __construct
- SetRouting
- SetAlias
- SetStop
- SetError
- Access
- SetWorker
- SetClassFile
- SetClassDir
- Run
- OpenLoad
- LinuxStartAll
- Session类
- 使用说明
- set
- get
- delete
- pull
- has
- id
- Cookie类
- 使用说明
- set
- get
- delete
- pull
- has
- TempLets类
- 模板语法
- 模板标签
- html
- show
- assign
- obtain
- Request类
- get
- post
- host
- referer
- getip
- localip
- header
- body
- file
- scheme
- protocolversion
- uri
- path
- querystring
- method
- Response
- SendFile
- FileStream
- SendData
- SetStatus
- SetHead
- SetMime
- WebSend
- redirect
- dumpJson
- dump
- come
- ps
- Frame类
- GetWeb
- ViewFile
- RoutingData
- SetClassFile
- SetClassDir
- GetMime
- FileMime
- LoadDir
- StartDir
- IsJson
- ArrJson
- JsonFormat
- ObStart
- GetConfig
- ConfigDir
- TempDir
- GetRunData
- GetStatic
- IsDebug
- SetDebug
- GetDebugInfo
- GlobalVariables类
- 使用说明
- set
- get
- delete
- pull
- has
- id
- Mysql类
- 新版本
- 第三方
- Thinkorm
- Medoo
- 旧版本
- Mysql 配置格式
- 项目中操作数据库
- 项目场景
- 项目数据库配置
- 项目数据库中间类
- 项目中操作数据表
- 连贯操作
- where
- table
- data
- order
- field
- limit
- page
- group
- having
- join
- tabname
- union
- sql
- link
- link_base
- lock
- CURD 操作
- 写入数据
- 数据删除
- 数据查询
- 数据更新
- 数据统计操作
- count
- sum
- max
- min
- avg
- 操作DEMO
- CurdTrait.php
- 项目Model层操作表.md
- Curl类
- Method类
- SslAes类
- layui_zqadmin