www.2979.com 5

html代码

【www.2979.com】dump 函数输出,最近比较绕有兴趣地学习PHP

30 10月 , 2019  

   ThinkPHP 提供了多少个 Model 类,供别的的 Model 举行三番两次。Model 类中是
MVC 中的模型类,它是调用 长久层
的上层类。以为那样描述难点多多,不过有如何措施吗?不过,那么些 Model
偶然不或许满意大家的有的供给,由此我们须要自定义二个 Model
类出来,可是自定义的 Model 相近要继续 TP 提供的 Model
类,而把大家自定义的 Model 类作为咱们项目中的 Model
基类。小编怎么感到本人在说绕口令,等等…笔者有一些晕。

//TP 恶补ing... 

近年来相比绕风乐趣地读书PHP,看完了有的基础语法、学会了选拔SMAWranglerY模版,进而看了ThinkPHP框架,

 

后生可畏、定义数据表模型

此框架的苍劲超过自个儿的不测,它的RO中华V真是强,还应该有内置的CRUD,比JAVA的框架更智能。

猥琐的需要

1.模型映射

低价回想性的求学转发了一些以下小说

  在动用 Java 的开源项目 JeeSite
时,养成了贰个倒霉的习于旧贯,习贯给每张表都扩大create_by、create_date、update_by、update_date、remarks 和 del_flag
这么多少个字段。如若每张表都有那多少个字段,那么对每张表实行 insert
时都会对上述的字段进行安装,对每张表进行 update
时都会对中间部分字段展开立异,对每条记下进行 delete 时都其实是对
del_flag 字段进展
置位。重复操作相当多,一些操作方法被涂改。那么,此时将要自定义多少个投机的
Model 来作为项指标 基类 了,这么些 Model 就担当干上边作者说的这个事情了。

要测量检验数据库是或不是平常连接,最直白的方法正是在前段时间调整器中实例化数据表,然后选取dump 函数输出,查看数据库的链接状态。代码:

CU瑞鹰D知识之意气风发 C 创立(create)

 

public function testdb(){        $obj=M("User");      dump($obj);  }

名词拆解解析:
1  CURD:意味着数据库五个基本操作:创制:create,更新:update,读取:read,删除:delete

自定义一个 Model

那会儿浏览器输出:

2  模型对象:即数据对象,你项目里每叁个Model类文件都会对应着二个数据表(或许视图),模型与数量表存在生机勃勃种光彩夺目关系。TP约定了命名要依据一定的正儿八经,假使不契合,则需求依靠事态开展额外的对应设置。譬喻Model类的tableName属性

  自定义贰个 Model,Model 中起码重新 TP 提供的 Model 中的
add、save、delete 和 select 方法。

www.2979.com 1www.2979.com 2

在第二节时,曾略为涉嫌Model类文件命名,今后再回看一下那部分的剧情:
我们此前在数据库中,已成立了多个think_form数据库表,何况在配置文件config.php中,大家定义了数据表的前缀是think_,
模型类(Model)文件的命名准则是:

  定义代码如下:

object(Model)#5 (20) {    ["_extModel:private"] => NULL    ["db:protected"] => object(DbMysql)#7 (18) {      ["dbType:protected"] => string(5) "MYSQL"      ["autoFree:protected"] => bool(false)      ["model:protected"] => string(7) "_think_"      ["pconnect:protected"] => bool(false)      ["queryStr:protected"] => string(28) "SHOW COLUMNS FROM `tpk_user`"      ["modelSql:protected"] => array(1) {        ["user"] => string(28) "SHOW COLUMNS FROM `tpk_user`"      }      ["lastInsID:protected"] => NULL      ["numRows:protected"] => int(2)      ["numCols:protected"] => int(0)      ["transTimes:protected"] => int(0)      ["error:protected"] => string(0) ""      ["linkID:protected"] => array(1) {        [0] => resource(27) of type (mysql link)      }      ["_linkID:protected"] => resource(27) of type (mysql link)      ["queryID:protected"] => resource(28) of type (mysql result)      ["connected:protected"] => bool(true)      ["comparison:protected"] => array(10) {        ["eq"] => string(1) "="        ["neq"] => string(2) "<>"        ["gt"] => string(1) ">"        ["egt"] => string(2) ">="        ["lt"] => string(1) "<"        ["elt"] => string(2) "<="        ["notlike"] => string(8) "NOT LIKE"        ["like"] => string(4) "LIKE"        ["in"] => string(2) "IN"        ["notin"] => string(6) "NOT IN"      }      ["selectSql:protected"] => string(96) "SELECT%DISTINCT% %FIELD% FROM %TABLE%%JOIN%%WHERE%%GROUP%%HAVING%%ORDER%%LIMIT% %UNION%%COMMENT%"      ["bind:protected"] => array(0) {      }    }    ["pk:protected"] => string(2) "id"    ["tablePrefix:protected"] => string(4) "tpk_"    ["name:protected"] => string(4) "user"    ["dbName:protected"] => string(0) ""    ["connection:protected"] => string(0) ""    ["tableName:protected"] => string(0) ""    ["trueTableName:protected"] => string(8) "tpk_user"    ["error:protected"] => string(0) ""    ["fields:protected"] => array(5) {      [0] => string(2) "id"      [1] => string(8) "username"      ["_autoinc"] => bool(true)      ["_pk"] => string(2) "id"      ["_type"] => array(2) {        ["id"] => string(7) "int(11)"        ["username"] => string(11) "varchar(20)"      }    }    ["data:protected"] => array(0) {    }    ["options:protected"] => array(0) {    }    ["_validate:protected"] => array(0) {    }    ["_auto:protected"] => array(0) {    }    ["_map:protected"] => array(0) {    }    ["_scope:protected"] => array(0) {    }    ["autoCheckFields:protected"] => bool(true)    ["patchValidate:protected"] => bool(false)    ["methods:protected"] => array(13) {      [0] => string(5) "table"      [1] => string(5) "order"      [2] => string(5) "alias"      [3] => string(6) "having"      [4] => string(5) "group"      [5] => string(4) "lock"      [6] => string(8) "distinct"      [7] => string(4) "auto"      [8] => string(6) "filter"      [9] => string(8) "validate"      [10] => string(6) "result"      [11] => string(4) "bind"      [12] => string(5) "token"    }  }

不满含前缀的数据库表表名还要首字母大写+Model.class.php

 1 <?php
 2 namespace AdminModel;
 3 use ThinkModel;
 4 
 5 /**
 6  * 项目中其他 Model 类的基类
 7  * 该类继承自 TP 提供的基类 Model
 8  */
 9 class BaseModel extends Model {
10     
11     /**
12      * 继承基类 Model 的 add 方法
13      * 自动插入 id create_by create_date update_by update_date del_flag
14      */
15     public function add($data='',$options=array(),$replace=false) {
16         
17         $data["id"]          = $this->getUuid();
18         $data["create_by"]   = "";
19         $data["create_date"] = date("Y-m-d H:i:s");
20         $data["update_by"]   = "";
21         $data["update_date"] = date("Y-m-d H:i:s");
22         $data["del_flag"]    = '0';
23         
24         return parent::add($data, $options, $replace);
25     }
26     
27     /**
28      * 获得 未删除 的所有数据
29      * 记录是否被删除通过 del_flag 字段来进行确定
30      */
31     public function select($options=array()) {
32         $map["del_flag"] = 0;
33         $this->where($map);
34         
35         return parent::select($options);
36     }
37     
38     /**
39      * 获取 全部 的所有数据
40      */
41     public function selectAll($options=array()) {
42         return parent::select($options);
43     }
44     
45     /**
46      * 更新数据
47      * 更新数据时,要更新 update_by update_date 两个字段
48      */
49     public function save($data='',$options=array()) {
50         $data["update_by"]   = "";
51         $data["update_date"] = date("Y-m-d H:i:s");
52         
53         return parent::save($data, $options);
54     }
55     
56     /**
57      * 删除也是更新
58      * 设置 删除 标志位即可
59      */
60     public function delete($data='',$options=array()) {
61         $data["del_flag"] = 1;
62         
63         return parent::save($data, $options);
64     }

故此在此以前大家为think_form数据表在Myapp/Lib/Model目录下创立二个文件FormModel.class.php

  那样,大家的 BaseModel 就定义好了,以后项目中的 Model 就不再接续 TP
的 Model 类了,而是继续大家自定义的 BaseModel 了。

【www.2979.com】dump 函数输出,最近比较绕有兴趣地学习PHP。万大器晚成未有提醒错误即为成功。

模型类的出格命名还能智能识别驼峰式的表命名,如若大家有个是形似think_new_table那样的表
能够命名称叫NewTableModel.class.php。暗中同意配置便得以智能识别自动对应think_new_table表,由此不必要改革配置。

 

M(“User”) 正是模型映射,M 函数等于 new Model() ,Model
类是模型的基类,也是数据库操作的基类, “User”
是此类的贰个分子属性,表示模型名称,模型名称与数据库中的数据表实行映射。注意:User
“U” 要大写,数据库中那个时候应该留存一张 user
表,系统会依附配置文件中的设置给 user 表增加前缀,举例tpk_user。要是无需为表加多前缀,将模型名称首字母改为小写,例如M(“user”)。

开采进度中,只要轻巧地定义好与数据表对应的模子类(xxxModel.class.php),就能够张开对数码操作了。
怎么让这几个模型支撑活动验证,自动填充,自动过滤这么些文化,在底下涉及到时会作相应批注。

继续我们定义的基类

 

平时的话,在表中添增加少都是通过表单来树立,为了越来越直观地上学CUWranglerD中的C,大家接下去创设个表单来开展加多数据的操作。
事先大家已在Myapp/Lib/Model/下创立好FormModel.class.php类—-模型(M)
何况也在Myapp/Lib/Action/下增加了贰个Index应用模块和写下了一个index操作—-调整器(C)
並且在Tpl目录下建立了与之相应的模板目录Index及index.html模板文件 ——-视图(V)
MVC形式的支付已反映了出去。
tdweb曾轻巧地总结了TP中这三者的关系,

  承继的 BaseModel 的艺术和三番三遍 Model 的不二诀要是同样的,只是利用 use
引进命名空间到近年来效果与利益域时的内需校订为大家的命名空间,并不是再去行使 TP
提供的命名空间。代码如下:

2.自定义模型

C的作用,正是从M中猎取数据到V,

1 <?php
2 namespace AdminModel;
3 use AdminModelBaseModel;
4 
5 class TrunkModel extends BaseModel {

D
函数用于连忙实例化自定义模型,能够打开复杂的数据库操作,比方数据印证、数据缓存、数据加工等。自定义模型存放在
Lib/Model 目录下,举个例子为数据表 tpk_article
数据表建模映射,则供给创设 阿特icleModel.class.php,然后采纳 D
函数举办实例化,ArticleModel 模型将与 tpk_article 表进行映射。

运用TP以表单提交数据到库,流程和您所通晓的表单提交未有何样差异,只是TP简化了数据操作的管理进程。
我们在实操中体味一下。
先来寻访我们所定义的多少表form的字段:

  use 引进的命名空间是 AdminModelBaseModel ,因为我们定义的
BaseModel 的命名空间是 AdminModel,因为这里的 TrunkModel 和 BaseModel
在七个命名空间下,省去 use 也是能够的。

例:使用 select() 输出 tpk_article 表的数据 ( select()
方法用于列出全部适合条件的数据 ) :

  1. ‘id’,//自动编号
  2. ‘title’,//标题
  3. ‘content’,//内容
  4. ‘create_time’,//创立时间
  5. ‘update_time’//更新时间
  6. ’email’,//邮箱
  7. ‘status’,//状态

 

class IndexAction extends Action {          public function article(){        $obj=D("Article");      $rows=$obj->select();                  dump($rows);     }  }

复制代码

  那样,在大家用 D 方法实例化 TrunkModel 的靶子后,使用 add
方法插入数据时,就能够先调用 BaseModel 中的 add
方法了,那样我们每张表都有的 create_by 等大器晚成雨后冬笋字段就都会自行得到了。

浏览器输出:

其中的create_time字段是为了记录数据插入的大运,大家得以采纳TP的数码自动填充来管理。

www.2979.com 1www.2979.com 4

在Model类定义 $_auto
属性,能够成功多少自动管理作用,用来管理私下认可值和任何 onclick=”tagshow(event)”>系统写入字段。
瞩目1:该机动填写也许会覆盖表单提交项目。其指标是为着防备表单违法提交字段。
瞩目2:要采取Model类的create方法成立数量对象的时候才会活动举办表单数据管理。

array(6) {    [0] => array(7) {      ["id"] => string(1) "1"      ["title"] => string(4) "test"      ["content"] => string(12) "test_content"      ["category"] => string(13) "test_category"      ["area"] => string(6) "北京"      ["add_user"] => string(5) "admin"      ["add_time"] => string(19) "2014-11-20 23:03:44"    }    [1] => array(7) {      ["id"] => string(1) "2"      ["title"] => string(12) "吼吼吼吼"      ["content"] => string(18) "任溶溶柔然人"      ["category"] => string(14) "test_category2"      ["area"] => string(6) "河北"      ["add_user"] => string(5) "admin"      ["add_time"] => string(19) "2014-11-22 15:16:12"    }    [2] => array(7) {      ["id"] => string(1) "4"      ["title"] => string(7) "test2_m"      ["content"] => string(4) "haha"      ["category"] => string(0) ""      ["area"] => string(6) "福建"      ["add_user"] => NULL      ["add_time"] => string(19) "2014-11-22 11:44:26"    }    [3] => array(7) {      ["id"] => string(1) "5"      ["title"] => string(2) "22"      ["content"] => NULL      ["category"] => string(0) ""      ["area"] => string(6) "福建"      ["add_user"] => NULL      ["add_time"] => string(19) "2014-11-22 12:40:58"    }    [4] => array(7) {      ["id"] => string(1) "6"      ["title"] => string(1) "1"      ["content"] => string(1) "2"      ["category"] => string(0) ""      ["area"] => string(6) "福建"      ["add_user"] => NULL      ["add_time"] => NULL    }    [5] => array(7) {      ["id"] => string(1) "7"      ["title"] => string(6) "lalala"      ["content"] => string(6) "hohoho"      ["category"] => string(0) ""      ["area"] => string(6) "北京"      ["add_user"] => NULL      ["add_time"] => NULL    }  }

1 张开Myapp/Lib/Model/FormModel.class.php文件,校勘代码为

  1. <?php
  2. class FormModel extends Model {
  3. // 自动填写设置
  4. protected $_auto  =  array(
  5.   array(‘status’,’1′,’ADD’),
  6.         array(‘create_time’,’time’,’ADD’,’function’),
  7. );
  8. }
  9. ?>

 

代码知识要点:
Model类的$_auto属性由五个填充因子组成的数组,填充因子定义格式:

例2:让 tpk_article 表的从头到尾的经过传闻顾客所在的地域彰显本地的资源音讯:

array(填充字段,填充内容,填充条件,附加法规)

ArticleModel.class.php:

填充字段:正是急需展开始拍录卖的表单字段,那么些字段并不一定纵然数据库表中的字段,对于表单内的助手工检索测字段例如重复密码和验证码也能够管理。
填充条件:ADD | UPDATE | ALL(注意,此是1.5本子表达,1.6已改为1 2
3,后续教程有证实)
当为ADD时,会在疯长多少时自动填充,那是暗许的管理方式
当为UPDATE时,在更新数据的时候会自动填写
当为ALL时,全部景况下都会开展活动填写

<?php  class ArticleModel extends Model{            public function article(){                $rows=$this->where("area='{$this->checkUserArea()}'")->select();          return $rows;      }        protected function checkUserArea(){                return "北京";          }

叠合法则:叠合法则是指向填充内容来讲,表示该内容填充的办法,包罗function,callback,田野同志,string
对此田野同志使用此外字段进行填写和string直接标示字符串作为值举办填空很好精通。比方地点

调节器代码:

  1. array(‘status’,’1′,’ADD’),

IndexAction.class.php:

复制代码

<?php  class IndexAction extends Action {        $obj=D("Article");      $rows=$obj->article();      $this->assign("list",$rows);      $this->display();

固然将状态status字段的值直接以1填充.

还要视图代码:

下面主要说说function与callback那八个叠合准则。

TPL/Index/article.html:

  1. protected $_auto  =  array(
  2. array(‘create_time’,’time’,’ADD’,’function’),
  3. );
<!DOCTYPE html>  <html>  <body>    <volist name="list" id="vo">      <li><{$vo.title}> - <{$vo.area}> - <{$vo.content}></li>  </volist>    </body>  </html>

上面create_time代表了要管理的字段,填充内容是time,附加法规是function使用函数,填充条件是ADD新扩张时管理,那么整行代码表示对create_time字段在新扩展的时候使time函数作为该字段的值进行机动填写。
再看八个function作为附加法则的事例

附:数据表 tpk_article 的表结构为:

  1. protected $_auto  =  array(
  2. array(‘password’,’md5′,’ADD’,’function’),
  3. );

www.2979.com 5

当使用function作为附加法规时,第二个填充内容就象征了那个因子是贰个函数名称,该函数的参数正是意味着填充字段的值,比方password的值是123456,则上边的代码会先将那么些值使用函数md5(‘123456’),这样管理后再插入到数据表中去。
对于function(函数)和callback(回调方法)理论是一模一样的,只可是一个是表示填充内容所写的是函数名,另五个是代表填充内容是类中的方法名。函数可以是PHP5内置函数或你和煦所写的函数。而callback是当下模型类所能调用的八个措施。 有关数据填充方面包车型大巴详细资料,请参照他事他说加以考察官方使用手册
《ThinkPHP数据操作指南》

总计:自定义模型映射,三个模子对应三个数据表,全部增加和删除改查都在模型类中做到。M
实例化的参数是数据库的表名,D 实例化的是投机在 model
文件夹下创立的模子文件。

2 张开Myapp/Tpl/default/Index/index.html文件,我们修正代码将form写进去

 

  1. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.0
    Transitional//EN”>
  2. <html>
  3. <head>
  4. <title>{$title}</title>
  5. </head>
  6. <body>
  7. <form action=”__URL__/add” method=”post” name=”formname”
    id=”formname”>
  8.     <p>
  9.            <label for=”title”>标题:</label>
  10.            <input name=”title” type=”text” id=”title” />
  11.     </p>
  12.     <p>
  13.            <label for=”email”>邮箱:</label>
  14.           <input name=”email” type=”text” id=”email” />
  15.     </p>
  16.     <p><label
    for=”content”>内容:</label></p>
  17.     <p>
  18.         <textarea name=”content” rows=”5″ cols=”25″
    id=”content” ></textarea>
  19.     </p>
  20.     <p><input type=”submit” value=”提交” /></p>
  21. </form>
    </body>
    </html>

3.create 方法

在地点代码中,大家简要地建了叁个form表单,并将标题统意气风发使用多个模板变量{$title}。
action提交到的拍卖地点是__URL__/add,其中__URL__是二个常量定义,表示近期模块地址,TP模板引擎会自动将这句解释为/index.php/Index/add,常见的沙盘使用的常量有

TP 对数码的插入和换代都做了可观封装:提供了 create()
方法用于创立数量对象。

__ROOT__    网址根目录地址
__www.2979.com,APP__         当前项目(入口文件)地址
__URL__         当前模块地址
__ACTION__   当前操作地址
__SELF__       当前 URL 地址

概念:数据对象 ——
数据字段与数据表之间的涉嫌,数据会被映射为类成员,再与数据表映射,最终完成数量的插入或更新。

3 设置模板变量 {$title} ,增加add操作方法

create() 方法是贯通操作、CUQX56D 操作的群集 (
富含数据创造、数据印证、表单验证、自动达成等 )。

开垦Myapp/Lib/Action/IndexAction.class.php文件,修正代码如下

cerate() 的数据源由 POST 表单提供,例如表单中有 username
表单成分,则该因素会被机关映射为多少表中的 username
字段。数据对象创立成功未来,对象被存放于内存中。

  1. <?php
  2. class IndexAction extends Action{
  3.     public function index() {
  4.        
       $this->assign(‘title’,’增加数据’);//这里安装了模版变量{$title}
  5.            $this->display();
  6.     }
  7.     // 管理表单数据的方法
  8.     function add()  {
  9.           $Form = D(“Form”);
  10.           if($Form->create()) {
  11.                    $Form->add();
  12.                    $this->redirect();
  13.           }else{
  14.                    header(“Content-Type:text/html;
    charset=utf-8”);
  15.                    exit($Form->getError().’ [ <A >返
    回</A> ]’);
  16.          }
  17.     }
  18. }//类定义 end
  19. ?>

例:加多数码

代码知识要点:
模板变量赋值前边的章节已介绍过。这里就不啰嗦了。

控制器:IndexAction,动作:add_article,代码:

大家来走访add方法的代码。
$Form = D(“Form”);
此处运用了TP的特色单字母函数D,是操作数据库时最常用的TP函数,表示实例化Form对象,
即$Form = new FormModel();
D函数的切实可行代码能够查阅ThinkPHP目录内的common/function.php中的片段,
它会活动引进Model类,并推断早先倘使实例化过这一个Model,就不再实例化,若然该Model不设有,就能够抛出至极错误,别的,D能够跨连串访问Model,一时半刻忽视。

IndexAction.class.php:

$Form->create()
利用Model类的Create方法创设叁个Form对象,战败会回到false。

<?php  class IndexAction extends Action {        Public function add_article(){            $this->display();      }  }

$Form->add(); //add方法会将表单数据开展写入
$this->redirect(); //履行跳转
如同此简单几行代码,便不加思考了对数码插入的管理。

视图: Tpl/Index/add_article.html:


<!DOCTYPE html>  <html>  <body>        <form method="post" action="__URL__/add">            <input type="text" name="title" placeholder="标题"><br><br>          <textarea name="content" id="content" placeholder="内容"></textarea><br><br>          <input type="submit" name="submit" value="提交">        </form>    </body>  </html>

__URL__/add 代表近日调节器的 add 动作。

add 动作代码:

<?php  class IndexAction extends Action {        public function add(){            //表单处理          $articleObj = M('Article');          $articleObj->create();          $articleObj->add_time = date("Y-m-d H:i:s",time());          if($articleObj->add()){                $this->success("数据添加成功");          }else{                $this->error("数据添加失败");          }  }

事例甘休。

 

4.模型属性( Model )

 _map 属性:字段映射

为了幸免前台表单成分与数据库字段名相通而使数据库字段揭示,可以改过前台表单成分的
name,同期在 Model 中动用 _map 属性。代码:

视图:Tpl/Index/add_article.html:

<!DOCTYPE html>  <html>  <body>        <form method="post" action="__URL__/add">            <input type="text" name="subject" placeholder="标题"><br><br>          <textarea name="textEdit" id="content" placeholder="内容"></textarea><br><br>           <input type="submit" name="submit" value="提交">        </form>    </body>  </html>

模型:ArticleModel.class.php:

<?php  class ArticleModel extends Model{        //使用_map属性(字段映射)将表单元素映射为相应表字段      protected $_map = array(                    "subject"=>"title",          "textEdit"=>"content"      );    }

控制器:IndexAction.class.php:

<?php    class IndexAction extends Action {            $articleObj = D("Article");          $articleObj->create();          $articleObj->add_time = date("Y-m-d H:i:s",time());          if($articleObj->add()){                        $this->success("数据添加成功");          }else{                        $this->error("数据添加失败");          }  }

事例停止。

 

二、基础模型

1.连贯操作

贯通方法除了 select() 方法外,其余的贯通方法不区分先后。

例:

$rows=$obj->where("add_user='dee'")->order("add_time desc")->limit(10)->select();

金沙国际唯一官网网址, 

2.CURD

① 成立数量 add()

<?php    class IndexAction extends Action {            public function post(){            $articleObj = D("Article");          $data['title'] = $_POST['subject'];          $data['content'] = $_POST['textEdit'];          $data['add_time'] = date("Y-m-d H:i:s",time());          if($articleObj->add($data)){                $this->success("数据添加成功");          }else{                $this->error("数据添加失败");          }      }  }

另二个事例:

<?php    class IndexAction extends Action {            public function post(){            $articleObj = D("Article");          $data['title'] = $_POST['subject'];          $data['content'] = $_POST['textEdit'];          $data['add_time'] = date("Y-m-d H:i:s",time());            if($articleObj->data($data)->add()){                $this->success("数据添加成功");          }else{                $this->error("数据添加失败");          }      }  }

 

② 更新数据 save()

<?php    class IndexAction extends Action {      public function post2(){            $articleObj = M("Article");          $data['id'] = 2;          $data['title'] = $_POST['subject'];          $data['content'] = $_POST['textEdit'];          $data['area'] = '河北';          $data['add_time'] = date("Y-m-d H:i:s",time());          if($articleObj->save($data)){                $this->success("数据修改成功");          }else{                $this->error("数据修改失败");          }      }  }

 

 

③ 读取数据 select 和 getFiled

getField 例子:

<?php    class IndexAction extends Action {        public function post3(){            $articleObj = M("Article");          if($articleObj->where("id=3")->setField("content","{$_POST['subject']}")){                $this->success("数据修改成功");          }else{                $this->error("数据修改失败");          }      }  }

 

④ 删除数据 delete

<?php    class IndexAction extends Action {            public function delete(){            $articleObj = M("Article");          if($articleObj->where("id=".$_GET['id'])->delete()){                $this->success("数据删除成功");          }else{                $this->error("数据删除失败");          }      }  }

 

3.询问语言

例子:

<?php    class IndexAction extends Action {        public function archives(){            $obj = M("Archives");  //      $data['writer'] = array("eq","网络营销中心");  //      $data['title'] = array("like","精诚%");          $data['id'] = array("lt","100");          $rows=$obj->where($data)->select();            $count=$obj->where($data)->count();          $tb=C("DB_PREFIX");            $this->assign("list",$rows);          $this->assign("count",$count);          $this->assign("tb",$tb);          $this->display("Article");      }            public function archives2(){            $obj = M("Archives");          $data['id'] = array(array("lt","1034"),array("GT","1029"),"and");          $rows=$obj->where($data)->select();          $this->assign("list",$rows);          $this->display("Article");      }  }

 

能够在调控器中动用 echo $obj->getLastSql(); 查看调换后的 SQL 语句。

 

参照他事他说加以考查资料:《PHP MVC 开采实战》

 



相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图