如何在thinkphp中直接 *** 作数据库中的视图

如何在thinkphp中直接 *** 作数据库中的视图,第1张

1、使用date函数进行转换即可。

2、先在控制器中将时间戳分配给模板

$this->assign('time',$time)

3、在模板里面:

{$time|date="Y-m-d H:i",###}

模板的使用 (重点)a、规则模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl)更换模板文件的后缀名(修改配置文件)'TMPL_TEMPLATE_SUFFIX'=>'.html',//更改模板文件后缀名b、修改模板文件目录层次'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次c、模板主题'DEFAULT_THEME'=>'your',//设置默认模板主题需要在TPL下面新建一个your文件夹作为模板主题文件夹如何动态修改模板主题?1、在后台准备一个功能,修改config.php文件中的默认模板项2、通过url传递 t=主题 参数可以修改不同的模板'DEFAULT_THEME'=>'your',//设置默认模板主题'TMPL_DETECT_THEME'=>true,//自动侦测模板主题'THEME_LIST'=>'your,my',//支持的模板主题列表

2

输出模板内容 (重点)a、display1.display中没有参数$this->display()2.可以带参数$this->display(本模块文件夹下的其他模板文件)$this->display('index2')$this->display(其他文件夹下的模板文件)$this->display('Public:error')//注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块$this->display(其他主题下的 文件夹下的 模板文件)//需要开启主题支持$this->display('my:Index:index')三、模板中的赋值 (重点)四、模板替换 (重点)

3

模版的使用

User模块下的demo方法 ,模块放置的地方,

D:\wamp\www\thinkphp\Home\Lib\Action

ThinkPHP中的视图模型

ThinkPHP中的视图模型

4

模块显示$this->display()

模版来显示内容

那模版放在哪里?

ThinkPHP中的视图模型

5

创建模版index要和方法public function index(){}相同

class UserAction extends Action

要和tpl下面的User同名,然后就是方法名index和其中的模版名index.html要相同

模版文件下Tpl/[分组文件夹]【模版主题】和模块名同名的文件夹Index/和方法名同名的文件index.html

ThinkPHP中的视图模型

6

模版的后缀名.html或者.tpl

更换模版文件的后缀名

需要修改配置文件

配置文件

ThinkPHP中的视图模型

7

//修改模版的后缀名

'TMPL_TEMPLATE_SUFFIX'=>'.html',

一般情况不要修改,默认为.html

更改模版的目录结构

'TMPL_FILE_DEPR'=>'_',//修改模板文件目录层次

c、模板主题'DEFAULT_THEME'=>'your',//设置默认模板主题需要在TPL下面新建一个your文件夹作为模板主题文件夹如何动态修改模板主题?1、在后台准备一个功能,修改config.php文件中的默认模板项2、通过url传递 t=主题 参数可以修改不同的模板'DEFAULT_THEME'=>'your',//设置默认模板主题'TMPL_DETECT_THEME'=>true,//自动侦测模板主题'THEME_LIST'=>'your,my',//支持的模板主题列表

ThinkPHP中的视图模型

ThinkPHP中的视图模型

ThinkPHP中的视图模型

//更改模版主题

//设置默认的主题

//'DEFAULT_THEME'=>'my',

//如果有多个主题

'DEFAULT_THEME'=>'your',

//动态的更改模版

'TMPL_DETECT_THEME'=>'true',

//自动侦测模板主题

'THEME_LIST'=>'your,my',

//支持的模板主题列表

ThinkPHP中的视图模型

输出模版中的内容

1) display中没有参数

$this->display()

2)可以带参数

$this->display(“模块下的其他模版”)

这里的模版名参数不要后缀名

ThinkPHP中的视图模型

ThinkPHP中的视图模型

ThinkPHP中的视图模型

ThinkPHP中的视图模型

ThinkPHP中的视图模型

ThinkPHP中的视图模型

输出模版中的内容小结:

二、输出模板内容 (重点)a、display1.display中没有参数$this->display()2.可以带参数$this->display(本模块文件夹下的其他模板文件)$this->display('index2')$this->display(其他文件夹下的模板文件)$this->display('Public:error')//注意,仅仅需要在Tpl下有Public文件夹以及其中的error.html即可,不需要一定有Public模块$this->display(其他主题下的 文件夹下的 模板文件)//需要开启主题支持$this->display('my:Index:index')

在项目中可以用文件夹路径的形式来调用文件

比如说

项目的公共文件Public

ThinkPHP中的视图模型

ThinkPHP中的视图模型

放在项目的Public下

属于整个项目中,如何调用呢?

要用路径来调用

//调用项目中的公共文件不是放在模块下的模版文件中,而是放在项目的公共文件中

//用路径来调用

$this->display('./Public/error.html')

//当前项目中的Public下的error.html页面

ThinkPHP中的视图模型

这里的当前是指主入口文件index.php当前目录下

display()的参数,第一个是模版,第二个是指定模版的编码utf-8,可以不写,模版的输出类型默认是html,可以改成tpl,xml

$this->show()输出模版的内容,模版文件不存在,或者别的文件,无法转成html

可以用这个方式输出内容

$this->show("这里是用show方法来输出内容。")

ThinkPHP中的视图模型

//通常我们会将内容放在一个变量中,有可能这个变量是从数据库中取出的

//$content="这是从数据库中取出的数据"

//fetch方法可以将一个模版文件返回给一个字符串

$content=$this->fetch('Public:error')

$this->show($content)

ThinkPHP中的视图模型

可以读取模版的内容,是一个字符串

//打印出这个字符串

dump($content)

ThinkPHP中的视图模型

//fetch方法可以将一个模版文件返回给一个字符串

$content=$this->fetch('Public:error')

//打印出这个字符串

//dump($content)

//当我们要替换一个字符串很方便

$content=str_replace("h1","h2",$content)

$this->show($content)

ThinkPHP中的视图模型

fetch方法,获得模版中的内容,以字符串的形式返回

//fetch方法可以将一个模版文件返回给一个字符串

$content=$this->fetch('Public:error')

//打印出这个字符串

//dump($content)

//当我们要替换一个字符串很方便

$content=str_replace("h1","h2",$content)

$this->show($content)

4)show()方法,不需要模版文件,可以向页面中输出内容

//fetch方法可以将一个模版文件返回给一个字符串

$content=$this->fetch('Public:error')

//打印出这个字符串

//dump($content)

//当我们要替换一个字符串很方便

$content=str_replace("h1","h2",$content)

$this->show($content)

先说下,关联模型。

如你所说,关联模型和jion类似。

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

视图模型。

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

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

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

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

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

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

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.受人之鱼不如授人之渔。上面没有给你详细答案,而是根据你的条件,给了你一个示例,希望你能研究透。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6926584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-30
下一篇 2023-03-30

发表评论

登录后才能评论

评论列表(0条)

保存