🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 视图 视图是虚表,是从一个或几个基本表(或视图)中导出的表,视图是原始数据库数据的 一种变换,是查看表中数据的另外一种方式。可以将视图看成是一个移动的窗口,通过它可 以看到感兴趣的数据。 视图是从一个或多个实际表中获得的。 #### 为了演示视图的使用,创建如下表 | 用户表 | 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提供了多表关联支持,使开发者可以轻松应对各种数据表的关联操作。 ### 关联类型 #### **一对一关联** 一对一关联是最简单的关联形式,比如用户表与用户信息表就是一对一关联。 #### **一对多关系** 一对多关系是最常见的一种表关系,比如文章表与栏目表。一个文章属于一个栏目,一 个栏目可以有多个文章,栏目表为一,文章表为多。两张表之间是一种从属的关系,往往我 们会把关联的键放在多的一方。 #### **多对多关系** 多对多关系无法区分主表与从表,比如说学生表与学生所学课程表之间就是一种多对多 关系,因为一个学生可以学多个课程,一个课程也可以有多个学生来学习。对于多对多的情 况,创建一张中间表来产生一对多的关系。