yii 2011-02-28 09:45:14 6733次浏览 6条回复 0 0 0

请教如果不用AR操作数据库,该如何处理?

多谢:P

  • 回复于 2011-02-28 09:48 举报

    可以使用DAO操作数据库!:)
    下面我给个例子吧!下面这个例子是获取查询记录并分页:
    控制器代码如下:

    $sql = "SELECT * FROM table WHERE cid=2 and status=1";
    $criteria=new CDbCriteria();
    $result = Yii::app()->db->createCommand($sql)->query();
    $pages=new CPagination($result->rowCount);
    $pages->pageSize=22;
    $pages->applyLimit($criteria);
    $result=Yii::app()->db->createCommand($sql." LIMIT :offset,:limit");
    $result->bindValue(':offset', $pages->currentPage*$pages->pageSize);
    $result->bindValue(':limit', $pages->pageSize);
    $posts=$result->query();
    $this->render('index',array(
            'posts'=>$posts,
            'pages'=>$pages,
    ));
    

    视图代码如下:循环输出

    <?php 
      foreach($posts as $model);
    ?>
    <?php 
      echo CHtml::link($model['title'],array('article/view','id'=>$model['id']));
    ?>
    <?php 
      endforeach;
    ?>
    

    分页widget代码:

    <?php 
      $this->widget('CLinkPager',array('pages'=>$pages));
    ?> 
    
  • 回复于 2011-02-28 09:50 举报

    为了开发者使用方便,建议使用AR操作数据库!但有些查询比较复杂,可以直接写SQL语句,然后用createCommand去执行,这样相对来说效率会高一些!

  • 回复于 2011-02-28 11:15 举报

    多谢巡洋舰.....

  • 回复于 2013-03-15 09:19 举报

    学习了 不错哟

  • 回复于 2013-03-15 09:20 举报

    看懂一点 createCommand是绑定吧?

  • 回复于 2013-03-15 09:22 举报

    $criteria=new CDbCriteria();这个是实例化什么?model?

您需要登录后才可以回复。登录 | 立即注册