手册有时候真是个晦涩难懂的东西,等你弄明白其中的流程时,才发现原来是这么简单——ThinkPHP视图模型/关联模型使用记
录写在前面:
不论是视图还是关联模型,thinkphp对文件、类的命名都有严格的要求,在没有查询到数据时,请首先检查文件、类的命名是否
符合规定;再者,结合logs查看SQL语句执行记录,主要是看查询的表名,是否与定义的表名一致,当查询的表名是 ‘表前缀_表名
_view’或“表前缀_表名_relation”,那一定是文件或类名出现错误。
一、关联模型
文件命名:XXXXXRelationModel.class.php//加入Relation是为了区别其他模型,可以直接看出这是一个关联模型——【后盾网】
类名:class XXXXXRelationModel extends RelationModel
属性:protected $tableName='XXXXXX';//因为在类命名中加入Relation,这里需要显示指定关联的主表名称
属性:protected $_link = array(
'关联表1名称'=>array(
'mapping_type'=>HAS_ONE/HAS_MANY//主表与关联表1的关系,反之使用BELONG_TO
'foreign_key'=>'tableName.id'//存储主表主键的字段名称
),
'关联表2名称'=>array()//与关联表1类似
);
D("XXXXXXRelation")->add($data);//实例化一个关联模型
二、视图模型
文件命名:YYYYYViewModel.class.php
类名:class YYYYYViewModel extends ViewModel
属性: public $viewFields = array(
'表名1'=array('fieldname1','fieldname2','fieldname3','_type'=>'left'),
'表名2'=array('fieldname1','fieldname2','_on'=>'biao2.xx=biao1.xx','_type'=>'left'),
.......
);
D('YYYYYView')->select();//实例化一个视图模型