hq金水

愿你是阳光,明媚不忧伤~
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

模型(modle)

Posted on 2016-08-01 10:17  hq金水  阅读(329)  评论(0编辑  收藏  举报

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>