MVC模式三:模型操作数据库,之后注册变量于模板,之后用控制器的dispaly()方法显示;

一、跨控制器调用方法
因为控制器的实质是类,所以在该方法中造一个要调用的类的对象,调用他的方法;
比如,在main控制器中调用index控制器的方法,就先在main控制器中造一个indexController的对象,再调用方法;
具体实施方式:
//跨控制器调用方法
function method(){
//原始方法
//$ff=new \Home\Controller\IndexController();//绝对路径
//$ff=new IndexController();//相对路径
//$ff->xianshi();

     //A方法
//$ff=A('Index');
//$ff=A("Admin/index")//A方法可以看成是原始方法的简写,注意括号内的路径写法
//$ff->xianshi();
//$ff是控制器的实例化对象=>具体的控制器

    //R方法,直接输出
echo R("index/xianshi");//注意写法
}

二、模型=>操作数据库(查)

表<=>类
字段<=>成员变量
MVC模式的第三种模式:操作数据库
function DB(){
//操作数据库
$dx=D();//第一步是建一个模型对象
//三种方式=>造模型对象
//$dx=new \Home\Model\UsersModel();//原始方式,必须要有原型文件,创建的对象属于子类
//$dx=D("car");//D方法,不用做原型文件,创建的对象属于父类
//$dx=M("car");//M方法,不用做原型文件,创建的对象属于父类
//var_dump($dx); //第二步访问数据库
//方法一:连贯操作
//$this->jia()->method();//连贯操作的意思$this->jia()返回$this;
//$dx=$dx->select();//查询
//$dx=$dx->select("c001,c002");
//$dx=$dx->find("c001");//找特定的数据根据主键值找; //where 可以加查询条件
//$attr=$dx->where("brand!='b002'")->select(); //table可以切换要操作的表
//$attr=$dx->table("info")->select(); //alias可以设置表的别名(知道就行)
//$attr=$dx->alias("汽车")->select(); //field可以指定查询的字段
//$attr=$dx->field("code,name")->select(); //order可以加排序条件
//$attr=$dx->order("brand desc")->select(); //group可以分组
//$attr=$dx->field("brand")->group("brand")->select(); //having可以加分组后的条件
//$attr=$dx->field("brand")->group("brand")->having("count(*)>=2")->select(); //join可以连接多个表,在field里面要给字段加别名
//$attr =$dx->field("Info.Code as 代号,Info.Name as 姓名,Sex as 性别,Nation.Name as 民族名称")->join("Nation on Info.Nation = Nation.Code")->select(); //Unition联合查询
/*$sql="select name from car union select name from users";
$attr=$dx->query($sql);*/
//$attr=$dx->field("name")->union("select name from users")->select(); //distinct去重
//$attr=$dx->field("brand")->distinct(true)->select(); //limit分页,参数分别代表跳过多少条,取多少条
//$attr=$dx->limit(2,5)->select(); //page分页,参数分别代表当前页,取多少条
//$attr=$dx->page(3,5)->select(); //聚合函数
//取数据总条数
//$attr=$dx->count("*");
//取某一列的和
//$attr=$dx->Sum("price");
//取平均值
//$attr=$dx->avg("price");
//取最大值
//$attr=$dx->max("price");
//取最小值
//$attr=$dx->min("price"); //方法二:写sql语句
$sql="select * from nation";
$attr=$dx->query($sql);
//$sql="insert into car (code,name) values('c022','解决')";
//$attr=$dx->execute($sql);
//var_dump($attr); //第三步注册变量到视图模板并显示
$this->assign("test",10);
$this->assign("info",$attr);
$this->display();
}

视图模板(DB.html):

<body>
<table width="80%" border="1" cellpadding="0" cellspacing="0">
<tr>
<th>序号</th>
<th>姓名</th>
<th>民族</th>
<th>性别</th>
</tr>
<foreach name="info" item="v">
<tr>
<td align="center"><{$v.code}></td>
<td align="center"><{$v.name}></td>
<td align="center"><{$v.nation}></td>
<td align="center"><{$v["sex"]?"男":"女"}></td>
</tr>
</foreach>
</table> <if condition="$test lt 10">
hello
<else />
lajikk
</if>
</body>

模型(modle)的更多相关文章

  1. Simplified Memory Modle C/C++内存模型

    最近学习c++看视频时,老师时常提到栈区堆区,搞不清楚,只能泪目,毕竟爱过...因此,接下来对此做些整理,方便回顾.(老师说:这个简化模型仅用于初学者示意,与实际模型并不完全一致) 1.stack(栈 ...

  2. [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型、视图、控制器、路由等的基本操作

    [.net 面向对象程序设计深入](6).NET MVC 6 —— 模型.视图.控制器.路由等的基本操作 1. 使用Visual Studio 2015创建Web App (1)文件>新建> ...

  3. [转]JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    首先这是现在最基本的分层方式,结合了SSH架构.modle层就是对应的数据库表的实体类.Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操 ...

  4. MVC 模型绑定

    在WebForm,获取提交表单的值一般都是Request.Form["Title"]这样的方式.在MVC中,提供了模型绑定机制.让后台获取表单或Url中的参数变得更加简单. 一.基 ...

  5. Django模型-数据库操作

    前言 前边记录的URLconf和Django模板全都是介绍页面展示的东西,也就是表现层的内容.由于Python先天具备简单而强大的数据库查询执行方法,Django 非常适合开发数据库驱动网站. 这篇开 ...

  6. django模型——数据库(二)

    模型--数据库(二) 实验简介 模型的一些基本操作,save方法用于把对象写入到数据库,objects是模型的管理器,可以使用它的delete.filter.all.order_by和update等函 ...

  7. 二 Djano模型层之模型字段选项

    字段选项 以下参数是全部字段类型都可用的,而且是可选的 null 如果为True,Django将在数据库中将空值存储为NULL.默认值为False 对于字符串字段,如果设置了null=True意味着& ...

  8. mvc,mvp.mvvm模型

    这些指的是框架模式,框架模式不是一门写代码的学问,而是一门管理与组织代码的学问.其本质是一种软件开发的模型. 与设计模式不同,设计模式是在解决一类问题时总结抽象出的公共方法(工厂模式,适配器模式,单例 ...

  9. JAVA中Action层, Service层 ,modle层 和 Dao层的功能区分

    Dao层是使用了Hibernate连接数据库.操作数据库(增删改查).Service层:引用对应的Dao数据库操作,在这里可以编写自己需要的代码(比如简单的判断).Action层:引用对应的Servi ...

随机推荐

  1. LeetCode Subsets (DFS)

    题意: 给一个集合,有n个互不相同的元素,求出所有的子集(包括空集,但是不能重复). 思路: DFS方法:由于集合中的元素是不可能出现相同的,所以不用解决相同的元素而导致重复统计. class Sol ...

  2. dedecms内容页 上下篇 添加文章描述方法

    dedecms5.7修改后 运行正常! 在根目录include文件夹中修改arc.archives.class.php文件,812行左右:为$query添加查询字段arc.description,分别 ...

  3. 使用ingress qdisc和ifb进行qos

    ifb   The Intermediate Functional Block device is the successor to the IMQ iptables module that was ...

  4. js实现简单易用的上下无缝滚动效果

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. dalvik虚拟内存管理之三——调试信息

    转载自http://www.miui.com/thread-75063-1-1.html 1. verbosegc一般Java虚拟机要求支持verbosegc选项,输出详细的垃圾收集调试信息.dalv ...

  6. 快速对字符转义,避免跨站攻击XSS

    XSS已经成为非常流行的网站攻击方式,为了安全起见,尽量避免用户的输入.可是有些情况下不仅不避免,反而要求鼓励输入,比如写博客.博客园开放性很高,可以运行手写的JS.之前比较著名的例子就是,凡是看到某 ...

  7. C++STL库之set的用法

    /*set意为集合,是一个内部自动排序不含重复元素的容器*/#include<stdio.h>#include<set>using namespace std;int main ...

  8. 5 款傻瓜式手机 APP 开发工具

    http://www.oschina.net/news/21552/5-app-creators

  9. Codeforces Round #125 (Div. 2)

    A. Hexadecimal's theorem 三个数没有限制,直接输出\(0\ 0\ n\). B. Special Olympics 分包含和外离情况,包含分2种情况. C. About Bac ...

  10. LeetCode()Substring with Concatenation of All Words 为什么我的超时呢?找不到原因了!!!

    超时代码 class Solution { public: vector<int> findSubstring(string s, vector<string>& wo ...