zoukankan      html  css  js  c++  java
  • thinkphp关联模型的用法

    HAS_ONE(值得注意的是,这是主动关联,外键必须是被关联的表):

     1 <?php
     2 namespace HomeModel;
     3 use ThinkModelRelationModel;
     4 class TagModel extends RelationModel{
     5     protected $_link =array(
     6         'artag'=>array(//关联的数据表
     7             'mapping_type'=>self::HAS_ONE,//一对一
     8             'class_name'        => 'artag',//关联的表
     9             'foreign_key'=>'tagid',//自定义关联外键,也就是目标关联表的外键,默认是   表名_id   ,这里是artag的外键
    10             'mapping_fields'=>'articleid,tagid',//自定义获取数据表的字段
    11             'as_fields'=>'articleid,tagid',//设置别名,可成一维数组
    12             ), 
    13          
    14 
    15 
    16     );
    17 
    18 }

    这是官方的说明:

    关联HAS_ONE支持的关联属性有: mapping_type :关联类型

    这个在HAS_ONE 关联里面必须使用HAS_ONE 常量定义。

    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(值得注意的是,这是被动关联,外键必须是被关联的表,也就是本表):

     1 <?php
     2 namespace HomeModel;
     3 use ThinkModelRelationModel;
     4 class ArtagModel extends RelationModel{
     5     protected $_link =array(
     6         'article'=>array(
     7             'mapping_type'=>self::BELONGS_TO,
     8             'foreign_key'=>'articleid',//这里是artag表的外键
     9             
    10             ),
    11 
    12     );
    13 
    14 }

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

    属性描述
    class_name 要关联的模型类名
    mapping_name 关联的映射名称,用于获取数据用 该名称不要和当前模型的字段有重复,否则会导致关联数据获取的冲突。
    foreign_key 关联的外键名称
    mapping_fields 关联要查询的字段
    condition 关联条件
    parent_key 自引用关联的关联字段 默认为parent_id 自引用关联是一种比较特殊的关联,也就是关联表就是当前表。
    as_fields 直接把关联的字段值映射成数据对象中的某个字段
  • 相关阅读:
    使用samba实现linux和windows文件共享
    使用li列举属性表中的某一属性
    popuptemplate的使用
    html中自动分配界面
    div中移除和添加元素
    使用v-html绑定数据,实现图片的动态转换
    使用js下载数据
    使用FeatureTable对FeatureLayer中的数据进行显示
    使用ant的checkboxGroup将列表信息添加为多选框,并根据多选框的转换进行操作
    arcgis api绘制多个点
  • 原文地址:https://www.cnblogs.com/mrcln/p/3918322.html
Copyright © 2011-2022 走看看