## 视图
视图是虚表,是从一个或几个基本表(或视图)中导出的表,视图是原始数据库数据的
一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可
以看到感兴趣的数据。 视图是从一个或多个实际表中获得的。
#### 为了演示视图的使用,创建如下表
| 用户表 | user |
| -- | -- |
| id | 自增主键ID |
| username | 用户名 |
| password | 用户密码 |
| 用户信息表 | user_info |
| -- | -- |
| id | 用户附加信息表自增主键ID |
| email | 用户邮箱 |
| address | 用户地址 |
| qq | 用户QQ |
| user_id | 关联用户ID |
| 新闻表 | news |
| -- | -- |
| id | 新闻自增主键ID |
| title | 新闻标题 |
| content | 新闻内容 |
| user_id | 关联用户ID |
#### 扩展模型中定义视图规则
Model 目录中创建扩展模型文件 UserModel.class.php
~~~
namespace Home\Model;
class UserModel extends \Took\View\ViewModel
{
public $view = array(
'user' => array(
'_as' => 'member',
'_type' => 'INNER',
'_field' => 'uid,username'
),
'user_info' => array(
'_type' => 'INNER',
'_on' => 'member.uid=user_info.user_id',
'_field' => 'email,address'
),
'news' => array(
'_on' => 'member.uid=news.user_id',
'_field' => 'title'
)
);
}
~~~
参数说明
| 属性 | 说明 |
| -- | -- |
| _as | 表别名 |
| _type | 关联关系 , INNER、LEFT、JOIN 三种 |
| _on | 关联条件 |
| _field | 查询字段 |
## 多表关联
TookPHP提供了多表关联支持,使开发者可以轻松应对各种数据表的关联操作。
### 关联类型
#### **一对一关联**
一对一关联是最简单的关联形式,比如用户表与用户信息表就是一对一关联。
#### **一对多关系**
一对多关系是最常见的一种表关系,比如文章表与栏目表。一个文章属于一个栏目,一
个栏目可以有多个文章,栏目表为一,文章表为多。两张表之间是一种从属的关系,往往我
们会把关联的键放在多的一方。
#### **多对多关系**
多对多关系无法区分主表与从表,比如说学生表与学生所学课程表之间就是一种多对多
关系,因为一个学生可以学多个课程,一个课程也可以有多个学生来学习。对于多对多的情
况,创建一张中间表来产生一对多的关系。