开源达人程序员博客 | 梦想还是要有的,万一实现了呢!
专注于HTML,DIV+CSS,JAVASCRIPT,JQUERY,AJAX,PHP+MYSQL,企业网站SEO优化技术研究及推广学习分享经验!

首页 » THINKPHP框架 » 正文

关于THINKPHP 的关联模型认识!对新手会有用的。

2014年10月08日 | 分类:THINKPHP框架 | 作者:开源达人 | 评论:条评论 | 浏览:1790

 

index 控制器
<?php
// 本类由系统自动生成,仅供测试用途
class IndexAction extends Action {
 //
    public function index(){
        if(!empty($_POST['up'])){
            $Stus=D('Stus'); //实例化表stus
            $Stus->create();  //创建数据对象
            $Stus=$Stus->add();  //填加数据
        }
        //$Stus=D('Stus'); //实例化表stus
        if(!empty($_POST['search'])){
            $Stus=D('Stus'); //实例化表stus
            $arr=$Stus->relation('class')->select(); //执行查询
        }
        //dump($arr);
        $this->assign('arr',$arr);  //符值
        $this->display();  //放到模板页
    }
}


模型 StusModel  stus是主表  Classes是副表  两个表相关联
<?php 
class StusModel extends RelationModel{

    protected $_auto=array(
        array('time','time',3,'function'), // 对create_time字段在更新的时候写入当前时间戳
    );

    protected $_link=array(
        'Classes'=> array(  
           
       'mapping_type'=>BELONGS_TO,  //1对1关联
            //'class_name'=>'Classes',  //要关联的Classes表名或Classes模型名
           
     //外键,也就是表Stus中的字段
              'foreign_key'=>'cid',     //关联外键的名称  外键,也就是表Stus中的字段
              'mapping_name'=>'class' , //关联的映射名称 外键,也就是表Stus中的字段
           
     //关联的字段,可以多个
              'mapping_fields'=>'cname', //郑联查询的字段
              'as_fields'=>'cname:classname' //影响成某个字段
            ),
    );
}
=========================================================================================


----------------------------------------------
关联HAS_ONE支持的关联属性有:
----------------------------------------------

mapping_type :关联类型

class_name :要关联的模型类名
 例如,class_name 定义为Profile的话则表示和另外的Profile模型类关联,这个Profile模型  类是无需定义的,系统会自动定位到相关的数据表进行关联。

mapping_name :关联的映射名称,用于获取数据用
 该名称不要和当前模型的字段有重复,否则会导致关联数据获取的冲突。如果mapping_name没  有定义的话,会取class_name的定义作为mapping_name。如果class_name也没有定义,则以数  组的索引作为mapping_name。

foreign_key : 关联的外键名称
 外键的默认规则是当前数据对象名称_id,例如: UserModel对应的可能是表think_user (注  意:think只是一个表前缀,可以随意配置) 那么think_user表的外键默认为 user_id,如果  不是,就必须在定义关联的时候显式定义 foreign_key 。

condition : 关联条件
 关联查询的时候会自动带上外键的值,如果有额外的查询条件,可以通过定义关联的condition  属性。

mapping_fields : 关联要查询的字段
 默认情况下,关联查询的关联数据是关联表的全部字段,如果只是需要查询个别字段,可以定  义关联的mapping_fields属性。

as_fields :直接把关联的字段值映射成数据对象中的某个字段
 这个特性是ONE_TO_ONE 关联特有的,可以直接把关联数据映射到数据对象中,而不是作为一个  关联数据。当关联数据的字段名和当前数据对象的字段名称有冲突时,还可以使用映射定义。


----------------------------------------------
关联BELONGS_TO定义支持的关联属性有:
----------------------------------------------

class_name   要关联的模型类名

mapping_name 关联的映射名称,用于获取数据用 该名称不要和当前模型的字段有重复,否则会导致关              联数据获取的冲突。

foreign_key  关联的外键名称

mapping_fields 关联要查询的字段

condition  关联条件

parent_key 自引用关联的关联字段 默认为parent_id 自引用关联是一种比较特殊的关联,也就是关联        表就是当前表。
 
as_fields 直接把关联的字段值映射成数据对象中的某个字段


----------------------------------------------
关联HAS_MANY定义支持的关联属性有:
----------------------------------------------

class_name 要关联的模型类名
 
mapping_name 关联的映射名称,用于获取数据用 该名称不要和当前模型的字段有重复,否则会导致关  联数据获取的冲突。

foreign_key 关联的外键名称

parent_key 自引用关联的关联字段 默认为parent_id

condition 关联条件 关联查询的时候会自动带上外键的值,如果有额外的查询条件,可以通过定义关联  的condition属性。

mapping_fields 关联要查询的字段 默认情况下,关联查询的关联数据是关联表的全部字段,如果只是  需要查询个别字段,可以定义关联的mapping_fields属性。
 
mapping_limit 关联要返回的记录数目

mapping_order 关联查询的排序

«   2018年1月   »
1234567
891011121314
15161718192021
22232425262728
293031
控制面板
您好,欢迎到访网站!
  [查看权限]
网站分类
搜索
最新留言
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
扫一扫,加我为微信好友 加我为微信好友