5-关联模型

原文:5-关联模型

1、 SectionModel.class.php

要继承 RelationModel,映射模型和类名写对应上数据表和action类

 1 <?php
 2     class SectionModel extends RelationModel{
 3         public $_link=array(
 4             ‘Category‘=>array(
 5                 ‘mapping_type‘=>HAS_MANY,  //关联关系 1:n
 6                 ‘class_name‘=>‘Category‘,    //对应类名
 7                 ‘foreign_key‘=>‘sectionid‘,     //外键,分类表的字段
 8                 ‘mapping_name‘=>‘category‘,    //映射模型
 9                 ‘mapping_order‘=>‘sectionid desc‘, //映射排序
10             ),
11             ‘Article‘=>array(
12                 ‘mapping_type‘=>HAS_MANY,
13                 ‘class_name‘=>‘Article‘,
14                 ‘foreign_key‘=>‘sectionid‘,
15                 ‘mapping_name‘=>‘article‘,
16
17             ),
18         );
19         

2、SectionAction.class.php

  开启关联relation(true)->

<?php
        class SectionAction extends CommonAction{
            public function index(){
                $sec=new SectionModel();
//Relation(true)会关联保存User模型定义的所有关联数据
//-----查询
//dump($sec->relation(true)->find(3));

/*----创建数据
                2.INSERT INTO `joys_section` (`title`) VALUES (‘自定义单元‘) [ RunTime:0.001198s ]
3.SHOW COLUMNS FROM `joys_category` [ RunTime:0.005667s ]
4.INSERT INTO `joys_category` (`title`,`alias`,`sectionid`) VALUES (‘自定义分类1‘,‘test11‘,8) [ RunTime:0.000496s ]
5.INSERT INTO `joys_category` (`title`,`alias`,`sectionid`) VALUES (‘自定义分类12‘,‘test21‘,8) [ RunTime:0.000302s ]

                $data[‘title‘]="自定义单元";
                $data[‘category‘]=array(
                    array(‘title‘=>‘自定义分类1‘,‘alias‘=>‘test11‘),
                    array(‘title‘=>‘自定义分类12‘,‘alias‘=>‘test21‘)
                    );
                $sec->relation(true)->add($data);*/
/*----更新数据
/*SHOW COLUMNS FROM `joys_section` [ RunTime:0.007477s ]
UPDATE `joys_section` SET `id`=8,`title`=‘自定义单元‘ WHERE ( id=8 ) [ RunTime:0.002553s ]
SHOW COLUMNS FROM `joys_category` [ RunTime:0.008511s ]
INSERT INTO `joys_category` (`title`,`alias`,`sectionid`) VALUES (‘自定义分类88‘,‘test‘,8) [ RunTime:0.000866s ]
SHOW COLUMNS FROM `joys_article` [ RunTime:0.011497s ]

                $data[‘id‘]=8;    //更新的时候要加上$data[‘id‘]=8;,不然从表更新不了
                $data[‘title‘]="自定义单元";
                $data[‘category‘]=array(
                    array(‘title‘=>‘自定义分类88‘,‘alias‘=>‘test‘)
                    );
            $sec->relation(true)->where(‘id=8‘)->save($data);
            *
            */        

//---------删除
/*DELETE FROM `joys_section` WHERE ( `id` = 8 ) [ RunTime:0.002513s ]
SHOW COLUMNS FROM `joys_category` [ RunTime:0.013709s ]
DELETE FROM `joys_category` WHERE ( `sectionid` = 8 ) [ RunTime:0.000967s ]
SHOW COLUMNS FROM `joys_article` [ RunTime:0.014401s ]
DELETE FROM `joys_article` WHERE ( `sectionid` = 8 ) [ RunTime:0.001064s ]

                $sec->relation(true)->delete(8);*/
            $data[‘id‘]=8;    //更新的时候要加上$data[‘id‘]=8;,不然从表更新不了
                $data[‘title‘]="自定义单元";
                $data[‘category‘]=array(
                    array(‘title‘=>‘自定义分类88‘,‘alias‘=>‘test‘)
                    );
            $sec->relation(true)->where(‘id=8‘)->save($data);    

                $this->display();
            }
时间: 2024-10-20 22:58:30

5-关联模型的相关文章

thinkphp 关联模型配置代码

<?php /** * 公司与部门关联模型 */ class CompanyRelationModel extends RelationModel{ //主表名称 protected $tableName = 'company'; //定义关联关系 protected $_link = array( //关联表名称 'department' => array( 'mapping_type' => MANY_TO_MANY, //多对多关系 'foreign_key' => 'com

thinkphp关联模型的用法

HAS_ONE(值得注意的是,这是主动关联,外键必须是被关联的表): 1 <?php 2 namespace Home\Model; 3 use Think\Model\RelationModel; 4 class TagModel extends RelationModel{ 5 protected $_link =array( 6 'artag'=>array(//关联的数据表 7 'mapping_type'=>self::HAS_ONE,//一对一 8 'class_name'

ThinkPHP 3.2.3 关联模型的使用

关于关联模型 ThinkPHP 3.2.3 的关联模型(手册地址)一般处理关联数据表的 CURD 操作,例如关联读取.关联写入.关联删除等. 实例 博客管理模块关于博客有 4 张数据表:博客表 crm_blog: CREATE TABLE `crm_blog` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(30) NOT NULL DEFAULT '', `content` text NOT NULL, `tim

ThinkPHP 学习笔记 ( 四 ) 数据库操作之关联模型 ( RelationMondel ) 和高级模型 ( AdvModel )

一.关联模型 ( RelationMondel ) 1.数据查询 ① HAS_ONE 查询 创建两张数据表评论表和文章表: tpk_comment , tpk_article .评论和文章的对应关系为,一条评论 id 对应一篇文章,为 ONE_TO_ONE 关系 ( 一对一 ).评论表的结构为: 其中 aid 字段与文章表的 id 字段对应.打开自定义模型 ArticleModel,让模型继承于 RelationModel,然后定义成员属性 $_link,代码: ArticleModel.cla

【ThinkPHP】关于ThinkPHP关联模型和视图模型的一些心得

视图模型更加类似一张表虚拟的表,视图包含一系列带有名称的列和行数据.但是,视图并不在数据库中以存储的数据值集形式存在.行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成.对其中所引用的基础表来说,视图的作用类似于筛选,这是ThinkPHP手册上的说法 其实说白了,视图模型就是mysql多表查询而已,视图模型不支持多表更新,删除 而关联模型是多个表查询以后的结果组合,会多次查询mysql,(在执行完主表查询以后,会有个_after_select)之类的操作,然后组合结果集.在一些情

ThinkPHP 关联模型(二十)

原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表自定义的Mode  --->Home\Lib\Model\MessageModel.class.php <?php class MessageModel extends RelationModel{ //这是自动填充 protected $_auto=array( array('time','ti

thinkphp 多对多关联模型(转)

先建立一个模型 1 2 3 4 5 6 7 8 9 10 11 12 <?php  class UserModel extends RelationModel{      protected $_link=array(        "group"=>array(            "mapping_type"=>MANY_TO_MANY,            "foreign_key"=>"uid&quo

thinkphp 3.2中依靠关联模型来关联三个表

这里说的是用thinkphp3.2关联模型关联三个表 根据用户表查询出三个表的数据,需要两个model来配合,第一个model是根据user表来查询到班级的信息,然后第二个model是根绝banji中的信息去查询年级中的信息 还有一个模型也可以做到这种效果,就是视图模型

ThinkPHP 关联模型中查询某条记录的父级(非查询子级)

数据表 id      cat_name      cat_pid 76     手机.数码     0 84     手机配件        76 86     蓝牙耳机        84 从属关系 : 蓝牙耳机  =>(上一级)  手机配件   =>(上一级)  手机.数码(顶级了) 关联模型 namespace Admin\Model; use Think\Model\RelationModel; class CategoryModel extends RelationModel {

关联模型[1]

一. 模型简介关联模型,一共有三种模式.一对一:ONE_TO_ONE,包括 HAS_ONE 和 BELONGS_TO:一对多:ONE_TO_MANY,包括 HAS_MANY 和 BELONGS_TO:多对多:MANY_TO_MANY.          用表关系来理解这三种模式:一对一:用户表和身份证表,一个用户只能对应一个身份证,而一个身份证只能对应一          个用户.这就是一对一.一对多:用户表和留言表:一个用户可以发表 N 条留言,而每条留言只能由某一个用户          发