4.PHP框架之ThinkPHP项目CMS内容管理系统-文章内容组件管理
thinkphp,cms,马明,CMS内容管理系统
文章内容组件管理ThinkPHP视图、关联模型
讲师:马明
thinkphp,cms,马明,CMS内容管理系统
内容组件 视图模型 关联模型
thinkphp,cms,马明,CMS内容管理系统
视图模型 定义视图模型,只需要继承ViewModel,
然后设置viewFields属性即可。class BlogViewModel extends ViewModel{ public$viewFields= array( 'Blog'=>array('id','name','title'), 'Category'=>array('title'=>'category_name', '_on'=>'Blog.category_id=Category.id'), 'User'=>array('name'=>'username', '_on'=>'er_id=User.id'), );}
thinkphp,cms,马明,CMS内容管理系统
定义视图模型 'Blog'=>array('id','name','title') '_as'=>'myBlog' 'title'=>'category_name' '_on'=>'Blog.category_id=Category.id' '_type'=>'LEFT'
thinkphp,cms,马明,CMS内容管理系统
视图查询 $Model= D("BlogView"); $Model->field('id,name,title,category_name,useruame')-
>where('id>10')->order('id desc')->select(); $Model->field('id,name,title,categoryName,userName')>order('id desc')->group('id')->select();
thinkphp,cms,马明,CMS内容管理系统
关联模型 关联关系 一对一关联:ONE_TO_ONE,包括 HAS_ONE和 BELONGS_TO 一对多关联:ONE_TO_MANY,包括 HAS_MANY和 BELONGS_TO 多对多关联:MANY_TO_MANY
thinkphp,cms,马明,CMS内容管理系统
关联模型 关联关系必然有一个参照表,例如: 用户表、用户分组表、用户收货地址表、商品表、订单表等 每个用户都有对应的用户资料档案,所以属于HAS_ONE关联 每个用户都属于某个用户组,所以属于BELONGS_TO关联 每个用户都可以发表多篇文章,但某个文章只属于一个用户,因
此属于HAS_MANY关联 每个模块可以属于多个菜单项,一个菜单项内可以包含多个模块
,因此属于MANY_TO_MANY关联
thinkphp,cms,马明,CMS内容管理系统
关联定义
ThinkPHP可以很轻松的完成数据表的关联CURD操作,目前支持的关联关系包括下面四种: HAS_ONE、BELONGS_TO、HAS_MANY、MANY_TO_MANY。
一个模型根据业务模型的复杂程度可以同时定义多个关联,不受限制,所有的关联定义都统一在模型类的$_link成员变量里面定义,并且可以支持动态定义。要支持关联操作,模型类必须继承RelationModel类,关联定义的格式是: protected$_link= array( '关联1'=> array( '关联属性1'=> '定义', '关联属性N'=> '定义', ), '关联2'=> array( '关联属性1'=> '定义', '关联属性N'=> '定义', ), ... );
thinkphp,cms,马明,CMS内容管理系统
关联模型—HAS_ONE
HAS_ONE关联表示当前模型拥有一个子对象,例如,每个用户都有对应的用户资料档案。我们可以建立一个用户模型UserModel,并且添加如下关联定义: class UserModel extends RelationModel{ public$_link= array( 'Profile'=> HAS_ONE, );}上面是最简单的方式,表示其遵循了系统内置的数据库规范,完整的定义方式是: class UserModel extends RelationModel{ public$_link= array( 'Profile'=>array( 'mapping_type'=>HAS_ONE, 'c
lass_name'=>'Profile',//定义更多的关联属性…… ), );}
thinkphp,cms,马明,CMS内容管理系统
BELONGS_TO BELONGS_TO关联表示当前模型从属于另外一个父对象,例如每个
用户都属于一个部门。我们可以做如下关联定义。class CategoryModel extends RelationModel{ public$_link= array("Section"=> array("mapping_type"=> BELONGS_TO,"class_name"=>"Section","foreign_key"=>"sectionid","mapping_name"=>"section",//"as_fields"=>"title:section_title", ), );}
thinkphp,cms,马明,CMS内容管理系统
HAS_MANY HAS_MANY关联表示当前模型拥有多个子对象,例如每个用户有多
篇文章,我们可以这样来定义class UserModel extends RelationModel{ public$_link= array("Article"=> array("mapping_type"=> HAS_MANY,"class_name"=>"Article","foreign_key"=>"created_by","mapping_name"=>"article","mapping_order"=>"created desc",//"as_fields"=>"title,alias:art_alias", ), );}
thinkphp,cms,马明,CMS内容管理系统
MANY_TO_MANY MANY_TO_MANY关联表示当前模型可以属于多个对象,而父对象
则可能包含有多个子对象,通常两者之间需要一个中间表类约束和关联。例如每个用户可以属于多个组,每个组可以有多个用户:class UserModel extends RelationModel{ public$_link= array(“Group"=> array( 'mapping_type'=>MANY_TO_MANY, 'class_name'=>'Group', 'mapping_name'=>'groups', 'foreign_key'=>'userId', 'relation_foreign_key'=>'goupId', 'relation_table'=>'think_gourpUser') );}
thinkphp,cms,马明,CMS内容管理系统
华章培训网版权所有
…… 此处隐藏:1154字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [资格考试]石油钻采专业设备项目可行性研究报告编
- [资格考试]2012-2013学年度第二学期麻风病防治知
- [资格考试]道路勘测设计 绪论
- [资格考试]控烟戒烟知识培训资料
- [资格考试]建设工程安全生产管理(三类人员安全员
- [资格考试]photoshop制作茶叶包装盒步骤平面效果
- [资格考试]授课进度计划表封面(09-10下施工)
- [资格考试]麦肯锡卓越工作方法读后感
- [资格考试]2007年广西区农村信用社招聘考试试题
- [资格考试]软件实施工程师笔试题
- [资格考试]2014年初三数学复习专练第一章 数与式(
- [资格考试]中国糯玉米汁饮料市场发展概况及投资战
- [资格考试]塑钢门窗安装((专项方案)15)
- [资格考试]初中数学答题卡模板2
- [资格考试]2015-2020年中国效率手册行业市场调查
- [资格考试]华北电力大学学习实践活动领导小组办公
- [资格考试]溃疡性结肠炎研究的新进展
- [资格考试]人教版高中语文1—5册(必修)背诵篇目名
- [资格考试]ISO9001-2018质量管理体系最新版标准
- [资格考试]论文之希尔顿酒店集团进入中国的战略研
- 全国中小学生转学申请表
- 《奇迹暖暖》17-支2文学少女小满(9)公
- 2019-2020学年八年级地理下册 第六章
- 2005年高考试题——英语(天津卷)
- 无纺布耐磨测试方法及标准
- 建筑工程施工劳动力安排计划
- (目录)中国中央空调行业市场深度调研分
- 中国期货价格期限结构模型实证分析
- AutoCAD 2016基础教程第2章 AutoCAD基
- 2014-2015学年西城初三期末数学试题及
- 机械加工工艺基础(完整版)
- 归因理论在管理中的应用[1]0
- 突破瓶颈 实现医院可持续发展
- 2014年南京师范大学商学院决策学招生目
- 现浇箱梁支架预压报告
- Excel_2010函数图表入门与实战
- 人教版新课标初中数学 13.1 轴对称 (
- Visual Basic 6.0程序设计教程电子教案
- 2010北京助理工程师考试复习《建筑施工
- 国外5大医疗互联网模式分析




