ThinkPHP第十六天(redirect、join、视图模型)

时间:2021-11-24 15:03:31

1、redirect

/**
* Action跳转(URL重定向) 支持指定模块和延时跳转
* access protected
* @param string $url 跳转的URL表达式
* @param array $params 其它URL参数
* @param integer $delay 延时跳转的时间 单位为秒
* @param string $msg 跳转提示信息
* return void
*/
protected function redirect($url,$params=array(),$delay=0,$msg='') {
$url = U($url,$params);
redirect($url,$delay,$msg);
}

使用$this->redirect()不用再用U函数了,其参数用法跟U函数完全一致,再redirect定义的时候已经U函数调用过。

2、Join连贯操作:

  M('article')->join('user ON user.id=article.uid')->select();这样子JOIN查询出来的结果,如果article和user中有相同字段,后面会覆盖前面,对于这个问题,可以使用Field(article.id AS aid,user.id AS uid)方法或者Field(array(article.id=>aid,user.id=>uid)),来指定要查询两个(或多个表)中的字段(命名别名)。Field(数组或字符串,True/False),数组直接用键名和值得方式来命名别名。

  JOIN对住 HAS_ONE和BELONGS_TO方式很有用,也可以采用视图模型方式来查询。

3、视图模型定义方式,在Model文件夹中新建 BlogViewModel.class.php

Class BlogViewModel extends ViewModel{//继承 ViewModel类
public $viewFields = array(//变量为 $viewFields
'blog'=>array('id'=>'bid','title','time','_type'=>'LEFT'),//表1为blog,要读取字段为id title time可以命名别名, _type关联类型为left join
'category'=>array('name','_on'=>'blog.cid=category.id'),//表2为category,要读取的字段为name,关联条件为 blog.cid=category.id
);
}
//'_'开始的都是特殊用途字

  视图模型使用 D('BlogView')->select();可以在视图模型中定义一些公用函数,在控制器中减少代码重用。如function getAll()函数,则在视图层的时候直接

  D('blogView')->getAll()就可以返回数据。

4、 控制网页的分页 page-break-after