thinkphp关联操作

比如:你要求删除用户的时候,同时删除与用户有关的所有信息。  
  
一对一:  有 (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

时间: 2024-09-29 23:08:45

thinkphp关联操作的相关文章

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

在复杂的关联操作中,如果要给关联定义增加可选的属性,我们可以采用完整定义的方式. 完整定义的格式是: protected $_link = array( '关联表名1'  =>  array( '该表的关联方式的属性1' => '定义', '该表的关联方式的属性N' => '定义', ), '关联表名2'  =>  array( '该表的关联方式的属性1' => '定义', '该表的关联方式的属性N' => '定义', ), ... ); 在上面的格式描述中,对于属性我

thinkPHP 连贯操作

在手册中的位置为 模型->连贯操作 一.常用连贯操作    1.where        帮助我们设置查询条件    2.order            对结果进行排序        $arr=$m->order('id desc')->select();        $arr=$m->order(array('id'=>'desc','sex'=>'asc'))->select();    3.limit            限制结果        lim

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 关联模型(二十)

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

oracle MERGE INTO...USING两表关联操作(效率高)

数据量小的时候可以使用子查询做两表关联操作:但数据量大的时候子查询效率太低(因为是单条比对) 比如: update person1 p1 set p1.p_name=(select p_name from person2 where p1.p_id=p2.p_id) where p1.add_date>to_date('2014-09-01','yyyy-mm-dd') 而使用MERGE INTO...USING 作两表关联操作(增.删.改)就效率非常高 MERGE INTO person1 p

ThinkPHP的操作基础(二)

1.$readTime_rank_result=M('blog')->order('bReadTime DESC')->limit(3)->select(): a.返回值为数据集,可以用一下的方法在前台输出: <volist name="readTime" id="r"> {$r.Id} nbsp; {$r.Time} </br>  //或是:{$r['Id']} nbsp; {$r['Time']} </volist

Hibernate关联操作、查询操作、高级特性、并发处理机制

本文所需的数据库初始文件,Hibernate常用操作的完整示例代码(包含所有Hibernate操作所需jar文件)提供下载学习:http://download.csdn.net/detail/daijin888888/9551724 1.Hibernate关联映射 1)什么是关联映射? 如果表之间具有关联关系,Hibernate允许我们在hbm.xml中描述他们的关联关系,然后在我们操作其中一张表时,自动的根据这种关系操作到另外的关系表,那么这种关联关系的设置,我们称之为关联映射. 2)关联映射

jmeter之关联操作

测试接口过程中,常常会遇到这样的一个情况:上一个请求返回的数据,另外一个接口需要要使用.那么,使用Jmeter操作时我们常常可以用"关联"来实现. 以接口"登录"和"金币充值"为例:即在做"金币充值"的接口时,需要用到"登录"的返回数据. 1.添加"登录"接口,并配置各参数,如图: 2.为"登录"接口添加[email protected] Path Extractor

Spark RDD常用算子操作(八) 键值对关联操作 subtractByKey, join,fullOuterJoin, rightOuterJoin, leftOuterJoin

原文作者:翟开顺首发:CSDN本人仅为自己方便查阅做了摘抄,请支持原作者原文地址:https://blog.csdn.net/t1dmzks/article/details/72077428 github: https://github.com/zhaikaishun/spark_tutorial/tree/master/src/main/java/com/spark/rdd_tutorial/tutorial8先从spark-learning中的一张图大致了解其功能 subtractByKey