thinkphp的控制器是不是调用模型得到数据再整合到视图层

 我来答
己学好4
2016-04-26 · TA获得超过1.5万个赞
知道大有可为答主
回答量:1.1万
采纳率:91%
帮助的人:4974万
展开全部
先说下,关联模型。

如你所说,关联模型和jion类似。
实际上,thinkphp的关联模型,就是简化你的jion操作。所以,本质上,关联模型,就是处理表连接关系的。归根结底的,就是让你在用模型操作的时候,简化SQL查询的join操作。(是简化操作,而不是改变SQL语句。)

视图模型。
先举个例子。一个用户表,一个文章表。一个用户对应多篇文章。

然后,你现在会经常出现如下需求:取得某人的文章记录,但是呢,只要求显示,用户名,文章名,文章ID,文章日期(其他的,比如,什么用户邮箱啊,用户密码啊,文章类型啊,文章修改日期啊,文章标签啊,你都不需要)

这个时候,你就可以定义一个试图模型,然后在 $viewFields 里面,就可以把你经常使用需要调用的那个几个字段,按照thinkphp的规定,定义进去。

这样,经过定义之后,你每次操作的时候,就像是操作“单表”一样的,是不是就很方便了呢。

其实,这个视图的概念,是一般比较完善点的关系型数据库都支持的,比如mysql,MSSQL,ORACLE等等。可以参考下相关数据库的知识。

至于你的那个东西定义的可参考方式如下。

1
2
3
4
5
6
7
8
9

class ArticleViewModel extends ViewModel {
public $viewFields = array(
'Article'=>array('name','title'....其他字段),
'Author'=>array('title'=>'category_name', '_on'=>'article.auid=author.id'),
'Article_class'=>array(字段定义如上,具体规则,下面有介绍, '_on'=>上面已经给你写了一个,这里其实就是写,article,和article_class 的主外键,对应关系。即JOIN ....ON..语句,ON部分的多内容),
'article_type'=>array('field_realename'=>'field_alias'。这里就相当于查询语句SELECT 字段 字段的别名。这样的对应关系。)
);

}

OK.受人之鱼不如授人之渔。上面没有给你详细答案,而是根据你的条件,给了你一个示例,希望你能研究透。
追问
就是说模型大部分是来处理数据库,控制器得到返回的数据
再渲染到模板
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式