比如:你要求删除用户的时候,同时删除与用户有关的所有信息。  
  
一对一:  有 (HAS_ONE)   属于 (BELONGS_TO)
    
一对多:  有 (HAS_MANY)  属于 (BELONG_TO)
    
多对多:  (MANY_TO_MANY)

HAS_ONE  HAS_MANY:

表aoli_member

表aoli_good

MemberModel.class.php

<?php
class MemberModel extends RelationModel{
    protected $_link=array(
        'good'=>array(
            'mapping_type'=>HAS_MANY,//HAS_ONE查询出一条
            'class_name'=>'good',
            'mapping_name'=>'good',
            'foreign_key'=>'uid',
            'mapping_fields'=>array('id','uid','title'),
            'as_fields'=>'title,id:goodid',
            //'condition'=>'',//筛选条件
            //'foreign_key'=>'',//外键
            //'mapping_fields'=>'',//关联字段
            //as_fields
        ),   
    );   
}
?>

MemberAction.class.php

关联查询
<?php
class MemberAction extends Action{
    function index(){
        $member=D('member');   
        //关联查询
        $list=$member->relation(true)->select();
        dump($list);
    }   
}
?>

关联插入
<?php
class MemberAction extends Action{
    function index(){
        $member=D('member');   
       
        //关联插入
        $data['username']='bbbbbbb';
        $data['password']='bbbbbbb';
        $data['good']=array(
                          array('title'=>'郝杰'),
                          array('title'=>'燕子'),
                      );
        $list=$member->relation(true)->add($data);
       
        //关联查询
        $list=$member->relation(true)->select();
        dump($list);
    }   
}
?>

关联更新
<?php
class MemberAction extends Action{
    function index(){
        $member=D('member');   
       
        $data['username']='杰天使';
        $data['password']='jieangel';
        $data['good']=array(
                          array('id'=>1,'title'=>'郝杰'),
                          array('id'=>2,'title'=>'燕子'),
                      );
        //关联更新
        $list=$member->relation(true)->where('id=1')->save($data);
       
        dump($list);
    }   
}
?>

关联删除
<?php
class MemberAction extends Action{
    function index(){
        $member=D('member');      
        //关联删除
        $list=$member->relation(true)->delete('4');
       
    }   
}
?>

BELONGS_TO:

GoodAction.class.php

<?php
class GoodAction extends Action{
    function index(){
        $good=D('good');      
        $list=$good->relation(true)->select();
        dump($list);
    }   
}
?>

GoodModel.class.php

<?php
class GoodModel extends RelationModel{
    protected $_link=array(
        'member'=>array(
            'mapping_type'=>BELONGS_TO,
            'foreign_key'=>'uid', 
        ),
    );
}
?>

转自http://blog.sina.com.cn/s/blog_7fb1495b0100y5x7.html

thinkphp关联操作的更多相关文章

  1. thinkphp框架中“关联操作”的完整定义详解

    在复杂的关联操作中,如果要给关联定义增加可选的属性,我们可以采用完整定义的方式. 完整定义的格式是: protected $_link = array(     '关联表名1'  =>  arr ...

  2. ThinkPHP 关联模型(二十)

    原文:ThinkPHP 关联模型(二十) ThinkPHP关联模型 两表关联查询:Message 和  user  关联条件uid(参考手册:模型->关联模型) 步骤: 一:创建Message表 ...

  3. loadrunner:关联操作

    文章以实例讲解loadrunner中的关联操作,内容包括:自动关联.手动关联和关联规则的设置. 1.1.1     准备工作 在web tours项目默认设置里,登录操作是没有生成sessionID的 ...

  4. ThinkPHP CURD 操作

    Thinkphp CURD操作php中实例还对象即可操作 (目录) 1.Add 1 调式程序 3 调出显示页面Trace信息 3 Dump 的含义 4 2.数据库查询 4 1.直接使用字符串进行查找 ...

  5. AcitveReocrd事件和关联操作

    ActiveRecord预定义的事件,都在 yiidbBaseActiveRecord 中进行了明确:   abstract class BaseActiveRecord extends Model ...

  6. ThinkPHP关联模型详解

    在ThinkPHP中,关联模型更类似一种mysql中的外键约束,但是外键约束更加安全,缺点却是在写sql语句的时候不方便,ThinkPHP很好得解决了这个问题.但是很多人不动关联模型的意思.现在就写个 ...

  7. ThinkPHP关联模型如何关联非主键

    ThinkPHP关联模型默认是主键外键关联 官方并没有提供相关文档 如何实现非主键与非主键间之间的关联 <?php namespace Admin\Model; use Think\Model\ ...

  8. jmeter之关联操作

    测试接口过程中,常常会遇到这样的一个情况:上一个请求返回的数据,另外一个接口需要要使用.那么,使用Jmeter操作时我们常常可以用“关联”来实现. 以接口“登录”和“金币充值”为例:即在做“金币充值” ...

  9. FlowNet:simple / correlation 与 相关联操作

    Flow Net : simple / correlation 与 相关联操作 ​ 上一篇文章中(还没来得及写),已经简单的讲解了光流是什么以及光流是如何求得的.同时介绍了几个光流领域的经典传统算法. ...

随机推荐

  1. python OOP(2)

    调用方法有两种形式 实例调用 直接调用后序参数即可 类调用 调用时需要先加上实例 示例 class test1: def pt(self,txt): #定义函数 test1.txt=txt print ...

  2. Servlet监听器的使用

    Servlet监听器的使用 制作人:全心全意 在Servlet技术中已经定义了一些事件,并且可以针对这些事件来编写相关的事件监听器,从而对事件做出相应的处理.例如,想要在Web应用程序启动和关闭时来执 ...

  3. vue-cli项目结构分析

    总体框架 一个vue-cli的项目结构如下,其中src文件夹是需要掌握的,所以本文也重点讲解其中的文件,至于其他相关文件,了解一下即可. 文件结构细分 1.build——[webpack配置] bui ...

  4. jsonview插件的常见使用方法整理

    Jsonview是目前最热门的一款开发者工具插件,确切的来说jQuery JSONView是一款非常实用的格式化和语法高亮JSON格式数据查看器jQuery插件.它是查看json数据的神器. 下载地址 ...

  5. swing之单选框和复选框

    import java.awt.Container; import java.awt.GridLayout; import javax.swing.*; public class num_1v ext ...

  6. ACM-ICPC 2018 徐州赛区网络预赛 J. Maze Designer

    传送门:https://nanti.jisuanke.com/t/31462 本题是一个树上的问题:结点间路径问题. 给定一个有N×M个结点的网格,并给出结点间建立墙(即拆除边)的代价.花费最小的代价 ...

  7. 小数化分数的O(log2n)解法

    具体约束: 给定一个小数x,x满足0<=x<1,且保证给定的x保留了18位小数 输出一个分数,使得分母不超过1e9,分子分母互质,且在满足这些条件的情况下最接近x 了解一下法雷数列和ste ...

  8. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  9. 49. spring boot日志升级篇—理论【从零开始学Spring Boot】

    我们之前在其中的一篇文章介绍过如何在spring boot中使用日志记录SLF4J. Spring Boot在所有内部日志中使用Commons Logging,但是默认配置也提供了对常用日志的支持,如 ...

  10. ACM数论常用知识完全解读

    此版本纯属扯淡....... 一个一个来起.