多对多关联模型,MANY_TOMANY
先分别创建三张表:think_user think_group think_user_group
user 表里有id、name字段
group 表里有id、groupName字段
user_group 表里有uid、gid字段
user_group 表里的uid、gid字段都作为主键
然后建立一个Model
<?php
class UserModel extends RelationModel{
protected $_link=array(
"group"=>array(
"mapping_type"=>MANY_TO_MANY,
"foreign_key"=>"uid", //中间表的字段
"relation_foreign_key"=>"gid", //中间表的字段
"relation_table"=>"think_user_group" //表名必须为全称(包括表前缀),即使是在配置文件中配置过了表前缀,这里也要加上!
)
);
}
?>
在Model中:
foreign_key 的uid是与user表里的id字段关联
relation_foreign_key的gid是与group里的id字段关联
接着建立一个Action
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
public function index(){
$db=D("user");
$list=$db->relation(true)->select();
echo "<pre>";
print_r($list);
}
}
完成! 最后可以看到数据表里的相关数据的全部输出了!
多对多关联模型,MANY_TOMANY的更多相关文章
- thinkphp 多对多关联模型(转)
先建立一个模型 1 2 3 4 5 6 7 8 9 10 11 12 <?php class UserModel extends RelationModel{ protected $ ...
- 实例讲解TP5中关联模型
https://blog.csdn.net/github_37512301/article/details/75675054 一.关联模型在关系型数据库中,表之间有一对一.一对多.多对多的关系.在 T ...
- ThinkPHP - 关联模型 - 多对多
表结构: 映射关系: UserRelationModel会取UserRelation为表名称.所以要自定义表名称: //定义主表名称protected $tableName = 'User'; < ...
- ThinkPHP5——模型关联(多对多关联)
关联定义 多对多关联不像一对一和一对多关联,它还要多建一个中间表用来处理多对多的关联,例如: #城市 create table city ( c_id int primary key AUTO_INC ...
- 《Entity Framework 6 Recipes》中文翻译系列 (30) ------ 第六章 继承与建模高级应用之多对多关联
翻译的初衷以及为什么选择<Entity Framework 6 Recipes>来学习,请看本系列开篇 第六章 继承与建模高级应用 现在,你应该对实体框架中基本的建模有了一定的了解,本章 ...
- (Hibernate进阶)Hibernate映射——多对多关联映射(八)
多对多映射是现实生活中最常见的映射,也是最容易理解的映射.废话少说,直接开始. 映射原理 不论是单向关联还是双向关联都是通过第三张表,将两个表中的主键放到第三张做一个关联.用第三张表来解决可能会造成数 ...
- ThinkPHP 3.2.3 关联模型的使用
关于关联模型 ThinkPHP 3.2.3 的关联模型(手册地址)一般处理关联数据表的 CURD 操作,例如关联读取.关联写入.关联删除等. 实例 博客管理模块关于博客有 4 张数据表:博客表 crm ...
- thinkphp 关联模型配置代码
<?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tabl ...
- 05.Hibernate多对多关联
前言:本文讲解使用Hibernate映射多对多关联关系,并使用多种方式映射多对多关联. 1.数据库表的多对多关系 本文根据学生信息表(tb_student)和教师信息表(tb_teac ...
随机推荐
- WPF宝典Url
https://sourceforge.net/directory/os:windows/https://archive.codeplex.com/ https://code.msdn.microso ...
- Linux: Linux C 获取当前系统时间的时间戳(精确到秒、毫秒、微秒) gettimeofday
说明 获取当前的时间的秒数和微秒数本方法需要用到 gettimeofday() 函数,该函数需要引入的头文件是 <sys/time.h> . 函数说明 int gettimeofday ...
- SQL2008R2的 遍历所有表更新统计信息 和 索引重建
[2.以下是更新统计信息] DECLARE UpdateStatisticsTables CURSOR READ_ONLY FOR SELECT sst.name, Schema_name(sst.s ...
- Android应用资源分析(老罗链接整理)
1.Android资源管理框架(Asset Manager)简要介绍和学习计划 2.Android应用程序资源的编译和打包过程分析 3.Android应用程序资源的查找过程分析 https://my. ...
- case when then 中判断null的方法
--下列SQL无效 SELECT CASE MAX(T.CREATE_TIME) WHEN NULL THEN TO_DATE('2019-03-05 00:00:01','yyyy-MM-dd hh ...
- Oracle 傻瓜式数据归档
推荐用方法二 方法一 [本库备份,分区表需要另写CREATE TABLE方法] ----------------------------------------------- ; ; ; ; RENA ...
- 【WPF】ImageMagick调节图片的颜色
需求:打开一张图片后,自由调节图片的颜色(色调). 思路:读取显示一张图片后,用ColorPicker取色器选择一种颜色,之后将图片的色调调节为该颜色. 工具: 1.图像工具 ImageMagick( ...
- count(*)、count(1)和count(列名)的区别
count(*).count(1)和count(列名)的区别 1.执行效果上: l count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL l count(1)包 ...
- 【转】Linux netstat命令详解,高级面试必备
简介 Netstat 命令用于显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Member ...
- Linux环境设置IP及关闭防火墙
确认当前网络配置: [root@localhost ~]# nmcli -p dev ===================== Status of devices ================= ...