模型:

有多少数据表,就建立多少模型

模型其实就是类

我们对数据库进行操作,需要实例化模型类,产生对象

通过对象调用相关的方法,就可以实现数据库的操作

 
增加记录
  1.  [php]
    $post =newPost();
    $post->title ="jack";
    $post->content ="1111111";
    $post->createtime = time();
    $post->save();
 
通过观察mdm项目发现在model中大多数的insert操作使用的是DAO方式,原生的insert sql语句;
在model中可以这样:
  1.  public function insert($id,$name)
    {
    $con = $this->dbConnection;
    $sql="insert into user (username,createtime) values (:username,:createtime);";
    $time = date("Y-m-d H:i:s");
    $cmd = $con->createCommand($sql);
    $cmd->bindParam(":username",$name,PDO::PARAM_STR);
    $cmd->bindParam(":createtime",$time,PDO::PARAM_STR);
    $cmd->execute();
    }
或者在controller中使用AR的较多(更多的操作方式是如下在控制器中执行,使用AR类的save()方法):
前提是,要在Model中,定义好rule,rule怎么定义,暂时还没弄明白
官方给的是如下原因:
我们可以使用attributes属性统一收集表单信息,但是数据表约束规则必须完整。
并且需要设置验证规则rules为safe,否则信息无法被attributes保存
  1.  public function actionInsert()
    {
    $arr = array();
    $array["name"]= $_GET["name"];
    $array["time"]= $_GET["time"];
    $user =newManagementUser("save");
    $user->attributes = $arr;
    $saved = $user->save();
    if($saved){
    echo 'success';
    }else{
    echo 'fail';
    }
    }
更新记录
一般也是在controller中更新,
  1.  public function actionUpdate()
    {
    $id = $_GET["id"];
    $policy =newDevicePolicy("update");
    $parray = array();
    $parray["name"]='default';
    $parray["time"]= time();
    $update = $policy->updateAll($parray,"id=:pid",array(":pid"=>$id));
    }
findByPk()使用
不实例化对象,操作数据库的方式如下:ManagementEndGroup::model()->find();
 public function actionModify()
{
$manageData = json_decode(file_get_contents("php://input"));
$datarry = array();
$datarry["id"] = $manageData->groupid;
$datarry["name"] = $manageData->groupname;
$datarry["desc"] = $manageData->groupdesc;
if(isset($manageData->upgroup))
$datarry["upgroup_id"] = $manageData->upgroup;
$manage = ManagementEndGroup::model()->findByPk($manageData->groupid);
$manage->attributes = $datarry;
$saved = $manage->save();
$rslt = new stdClass();
$rslt->code = $saved?0:-1;
print_r(json_encode($rslt));
}
Goods.php(模型)
    1.    /**
      * 查询商品列表(数组方式)
      */
      public function GoodsList()
      {
      $sql = "select * from sw_goods where 1=1";
      $result = $this->findAllBySql($sql); $resultarray = array();
      foreach ($result as $item)
      {
      $itemarray = array();
      $itemarray["goods_id"] = $item["goods_id"];
      $itemarray["goods_name"] = $item["goods_name"];
      $itemarray["goods_weight"] = $item["goods_weight"];
      $itemarray["goods_price"] = $item["goods_price"];
      $itemarray["goods_number"] = $item["goods_number"];
      $itemarray["goods_category_id"] = $item["goods_category_id"];
      $itemarray["goods_brand_id"] = $item["goods_introduce"];
      $itemarray["goods_big_img"] = $item["goods_big_img"];
      $itemarray["goods_small_img"] = $item["goods_small_img"];
      $itemarray["goods_create_time"] = $item["goods_create_time"];
      $resultarray[]=$itemarray;
      }
      return $resultarray;
      // print_r($resultarray);
      }
GoodsController.php(控制器)
  1.  //商品列表页
    publicfunction actionCategory()
    {
    //render()带布局渲染
    //renderPartial()部分渲染
    $goods =newGoods();
    $goodslist = $goods->GoodsList();
    print_r($goodslist);
    $this->render('category');
    }

yii操作数据库(AR)的更多相关文章

  1. yii操作数据库(PDO)

    1.数据访问对象(DAO): 执行 SQL 语句 数据库连接建立后,SQL 语句就可以通过使用 [CDbCommand] 执行了.你可以通过使用指定的SQL语句作为参数调用 [CDbConnectio ...

  2. Yii操作数据库的3种方法

    一.执行原生太SQL的PDO方式. 复制代码代码如下: $sql = "";//原生态sql语句 xx::model()->dbConnection->createCo ...

  3. Yii框架操作数据库的几种方式与mysql_escape_string

    一.Yii操作数据库的几种选择 1,PDO方式. $sql = "";//原生态sql语句 xx::model()->dbConnection->createComma ...

  4. CI中的数据库操作以及AR连贯操作

    要使用CI中的数据库操作,首先我们应该在CI的 application/config/databass.php 文件中配置数据库信息,通常就是配置主机名,用户名,密码,数据库名,表前缀(dbprefi ...

  5. YII访问数据库

    YII访问数据库 CDbConnection: 一个抽象数据库连接 CDbCommand: SQL statement CDbDataReader: 匹配结果集的一行记录 CDbTransaction ...

  6. YII2中操作数据库的方式

    一.以createCommand方式: // YII2中通过createCommand来处理数据库 // 查询多条记录 // {{%user}} 表示如果设置了表前缀,YII会自动帮你替换 $data ...

  7. yii 主从数据库分离-转载http://www.yiichina.com/doc/guide/2.0/db-dao

    数据库复制和读写分离 很多数据库支持数据库复制 database replication来提高可用性和响应速度. 在数据库复制中,数据总是从主服务器 到 从服务器. 所有的插入和更新等写操作在主服务器 ...

  8. tp框架 :操作数据库

    操作数据库,进行增删改数据 一.对数据表添加数据(方法:add()) (1)上一篇已经讲过链接数据库了,继续进行对数据库的操作,还是用控制器文件中的HomeController.class文件 看下数 ...

  9. yii2操作数据库 mysql 读写分离 主从复制

    转载地址:http://www.kuitao8.com/20150115/3471.shtml 开始使用数据库首先需要配置数据库连接组件,通过添加 db 组件到应用配置实现("基础的&quo ...

随机推荐

  1. HttpServletResponse HttpServletRequest RequestDispatcher

    HttpServletResponse HttpServletRequest RequestDispatcher 07. 五 / J2EE / 没有评论   一.以字节为单位向客户端发送中文数据1.服 ...

  2. Oracle创建主键自增表

    Oracle创建主键自增表   1.创建表    create table Test_Increase(            userid number(10) NOT NULL primary k ...

  3. C# 对类中的保护成员进行写操作(邀请大家拍砖)

    假如我有一个类库 Lib,提供一个类 ClassA 对外服务,ClassA 中有若干只读属性 PropA, PropB 等等,外部调用者无法对 ClassA 中的 PropA 和 PropB 进行写操 ...

  4. 【转】cocos2d-x windows开发环境配置

    声明:本教程在参考了以下博文,并经过自己的摸索后实际操作得出,本教程系本人原创,由于升级后的cocos2d-x有了一些变化,目前的博文还没有关于Cocos2d-x 2.2.1最新版搭建Android交 ...

  5. HTML5简单入门系列(二)

    前言 上篇中写到HTML5中的画布(canvas)元素,查看了canvas其他的资料,发现这个元素相关内容太多,鉴于本系列只是基础(主要是LZ也是初学),不再做太多介绍,有机会的话再单独写相关内容.说 ...

  6. html简单定位

    (1) 两个块水平排列 将两个块都设为浮动即可.注意不能将两个块的position属性设为absolute(绝对定位) #div1{ background-color: red; float:left ...

  7. css清除浮动解决方案

    清除浮动包括清除子元素的浮动和清除上级元素的浮动,其中清除上级元素的浮动,只需设置clear为both就可以了,而清除子元素的浮动则可以用空标签法.clearfix方法或overflow方法.因清除上 ...

  8. 创业不要在IT业内创(市场太小,而且都喜欢自己折腾、没有花钱的习惯)

    精神是好的.但是,我看了你的产品和网站:你选的创业方向基本是死路一条,我劝你该放弃就放弃.我判断你的思路还局限在IT行业内,创业不要在IT业内创,要走出去,睁开眼看看别人的世界,自己体会.我不是打击你 ...

  9. SDL显示内存中的图像

    <textarea readonly="readonly" name="code" class="c++"> #include ...

  10. Django 从零開始

    1.下载安装django 方法1: pip install Django==1.6.5 測试是否成功安装 : ~$ python import django ~$ (1, 6, 5, 'final', ...