博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
thinkphp 关联模型 注意点
阅读量:6469 次
发布时间:2019-06-23

本文共 2318 字,大约阅读时间需要 7 分钟。

这里以商品与商品类别为例

1、表名为goods_type  则模型名为GoodsTypeModel,若模型名不是这,得另外定义   protected $tableName=模型对应主表名

2、模型类必须继承RelationModel

3、三种关联关系 

一对一关联 :ONE_TO_ONE,包括HAS_ONE和BELONGS_TO

一对多关联 :ONE_TO_MANY,包括HAS_MANY和BELONGS_TO
多对多关联 :MANY_TO_MANY ,这个要专门定义一个表来表示两个表间多对多关系

(1)一对一实例:商品与商品属性

商品模型类

class GoodsModel extends RelationModel{

protected $fields = array();

protected $_link = array(

'JhGoodsAttribute' => array(

  'mapping_type' => HAS_ONE,
  'class_name' => 'JhGoodsAttribute',
  'foreign_key' => 'goods_id',
),

);

}

商品属性模型类

class JhGoodsAttributeModel extends RelationModel {

protected $fields = array(

'goods_id', 'sale_price', 'showname', 'original_price', 'suggest_price', 'up_num', 'volume', 'issues_time', 'pagedetails', 'shelves', '_pk' => 'goods_id', '_autoinc' => false
);
protected $_link = array(
'Goods' => BELONGS_TO,
);

}

(2)一对多模型  员工与权限

员工模型类

class StaffModel extends RelationModel {

protected $fields = array(

'identity', 'name', 'num', 'pswd', 'department_id', 'job', '_pk' => 'num', '_autoinc' => false
);
protected $_link = array(
'Authority' => array(
  'mapping_type' => HAS_MANY,
  'class_name' => 'Authority',
  'mapping_name' => 'Authority',
  'mapping_key' => 'num',
  'foreign_key' => 'staff_num'
),

权限类

class AuthorityModel extends RelationModel {

protected $fields = array(

'id', 'staff_num', 'authority_num', '_pk' => 'id', '_autoinc' => true
);
protected $_link = array(
'Staff' => BELONGS_TO
);

}

(3)多对多关系  商品和商品类别

商品类 

class GoodsModel extends RelationModel {

protected $fields = array(

'id', 'name', 'code', 'details', 'specification', 'pack', 'weight', 'volume', 'unit', 'remark', 'expire_threshopld', 'min_threshopld', 'producer_id', '_pk' => 'id', '_autoinc' => true
);
protected $_link = array(
'GoodsType' => array(
  'mapping_type' => MANY_TO_MANY,
  'class_name' => 'GoodsType',
  'relation_foreign_key' => 'goods_type_id',
  'relation_table' => 'goods_type_relation'
),

}

 商品类别模型类

class GoodsTypeModel extends RelationModel {

protected $fields = array(

'id', 'parent_id', 'name', '_pk' => 'id', '_autoinc' => true
);
protected $_link = array(
'Goods' => array(
  'mapping_type' => MANY_TO_MANY,
  'class_name' => 'Goods',
  'relation_foreign_key' => 'goods_id',
  'foreign_key' => 'goods_type_id',
  'relation_table' => 'goods_type_relation'
),

}

 

转载于:https://www.cnblogs.com/pigmorn/p/4129108.html

你可能感兴趣的文章
DataBinding最全使用说明
查看>>
原生Js交互之DSBridge
查看>>
Matlab编程之——卷积神经网络CNN代码解析
查看>>
白洋淀周末游
查看>>
三篇文章了解 TiDB 技术内幕 —— 说计算
查看>>
在Mac下使用Python3
查看>>
copy strong weak assign的区别
查看>>
OpenCV 入门
查看>>
css 3D transform变换
查看>>
ele表格合并行之后的selection选中
查看>>
正则表达式分解剖析(一文悟透正则表达式)
查看>>
解决UILable标点符号居中的问题
查看>>
HTML5新特性教程
查看>>
SpringBoot 实战 (十七) | 整合 WebSocket 实现聊天室
查看>>
ImageOptim-无损图片压缩Mac版
查看>>
12 Go语言map底层浅析
查看>>
vue-resumer 项目中 element-ui 遇到的 textarea autosize 问题
查看>>
以主干开发作为持续交付的基础
查看>>
Tech UP——EGO北京分会成立啦
查看>>
PHP扩展库PEAR被攻击,近半年下载者或被影响
查看>>