模型(modle)

时间:2021-12-05 16:10:30

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>