`

Yii framework CRUD code sytax (all)

    博客分类:
  • yii
阅读更多

FROM:http://my.chinaunix.net/space.php?uid=395468&do=blog&id=213572

 

  1. < ? php
  2. class PostTest extends CDbTestCase{
  3.     public $ fixtures = array (
  4.         'posts' = > 'Post' ,
  5.         'tags' = > 'Tag' ,
  6.     ) ;
  7.     
  8.     public function testFindPost( ) {
  9.         //调用 find 时,我们使用 $condition 和 $params 指定查询条件。
  10.         //此处 $condition 可以是 SQL 语句中的 WHERE 字符串,$params 则是一个参数数组,
  11.         //其中的值应绑定到 $condation 中的占位符。
  12.         $ post = $ this - > posts( 'post1' ) ;
  13.         $ fPost = Post: : model( ) - > find( 'id = :id' , array ( ':id' = > $ post - > id) ) ;
  14.         //SELECT * FROM `tbl_post` `t` WHERE `t`.`id`=1 LIMIT 1
  15.         
  16.         $ fPost = Post: : model( ) - > find( '?' , array ( $ post - > id) ) ;
  17.         //SELECT * FROM `tbl_post` `t` WHERE '1' LIMIT 1
  18.         
  19.         //find返回符合条件的第一条记录,而findAll会返回符合条件的所有行。
  20.         $ fAllPost = Post: : model( ) - > findAll( 'id = :id' , array ( ':id' = > $ post - > id) ) ;
  21.         //SELECT * FROM `tbl_post` `t` WHERE id = '1'
  22.         
  23.         $ fAllPost = Post: : model( ) - > findAll( '?' , array ( $ post - > id) ) ;
  24.         //SELECT * FROM `tbl_post` `t` WHERE '1'
  25.         
  26.         $ criteria = new CDbCriteria( ) ;
  27.         $ criteria - > condition = 'id = :id AND title = :title' ;
  28.         $ criteria - > params = array ( ':id' = > $ post - > id, ':title' = > $ post - > title) ;
  29.         $ fPost = Post: : model( ) - > find( $ criteria ) ;
  30.         //SELECT * FROM `tbl_post` `t` WHERE id = '1' AND title = 'post1' LIMIT 1
  31.         
  32.         $ fAllPost = Post: : model( ) - > findAll( $ criteria ) ;
  33.         //SELECT * FROM `tbl_post` `t` WHERE id = '1' AND title = 'post1'
  34.         
  35.         $ fPost = Post: : model( ) - > findByPk( $ post - > id, 'title = :title' , array ( ':title' = > $ post - > title) ) ;
  36.         //SELECT * FROM `tbl_post` `t` WHERE `t`.`id`=1 AND (title = 'post1') LIMIT 1
  37.         
  38.         $ fPost = Post: : model( ) - > findByAttributes( array ( 'id' = > $ post - > id, 'title' = > $ post - > title) ) ;
  39.         //SELECT * FROM `tbl_post` `t` WHERE `t`.`id`='1' AND `t`.`title`='post1' LIMIT 1
  40.         
  41.         $ sql = 'SELECT id, title from {{post}} WHERE id = ? AND title = ?' ; //必须设置表前缀
  42.         $ fPost = Post: : model( ) - > findBySql( $ sql , array ( $ post - > id, $ post - > title) ) ;
  43.         
  44.         $ sql = 'SELECT id, title from {{post}} WHERE id = :id AND title = :title' ;
  45.         $ fPost = Post: : model( ) - > findBySql( $ sql , array ( ':id' = > $ post - > id, ':title' = > $ post - > title) ) ;
  46.         
  47.         //如果没有找到符合条件的行,find返回null,findAll 返回 array()。
  48.         
  49.     }
  50.     
  51.     public function testCountPost( ) {
  52.         $ post = $ this - > posts( 'post1' ) ;
  53.         
  54.         $ cPost = Post: : model( ) - > count ( '?' , array ( $ post - > title) ) ;
  55.         //SELECT COUNT(*) FROM `tbl_post` `t` WHERE 'post1' 无意义
  56.         
  57.         $ cPost = Post: : model( ) - > countByAttributes( array ( 'title' = > $ post - > title, 'content' = > $ post - > content) ) ;
  58.         //SELECT COUNT(*) FROM `tbl_post` `t` WHERE `t`.`title`='post1' AND `t`.`content`='content1'
  59.         
  60.         $ sql = "SELECT title from {{post}} WHERE title LIKE '%" . $ post - > title . "%'" ;
  61.         $ cPost = Post: : model( ) - > countBySql( $ sql ) ;
  62.         //至少有一条记录符合查询条件
  63.         $ ePost = Post: : model( ) - > exists( 'id = ?     AND    title = ?' , array ( $ post - > id, $ post - > title) ) ;
  64.         //SELECT 1 FROM `tbl_post` `t` WHERE id = '1'     AND    title = 'post1' LIMIT 1
  65.     }
  66.     
  67.     public function testUpdatePost( ) {
  68.         $ post = $ this - > posts( 'post1' ) ;
  69.         $ post - > title = 'update post 1' ;
  70.         
  71.         if ( $ post - > isNewRecord) {
  72.             $ post - > create_time = $ post - > update_time = new CDbExpression( 'NOW()' ) ;
  73.             //UPDATE `tbl_post` SET `id`=1, `title`='update post 1', `content`='content1', `tags`=NULL, `status`=1, `create_time`=NULL, `update_time`=1302161123, `author_id`=1 WHERE `tbl_post`.`id`=1
  74.         } else {
  75.             $ post - > update_time = time ( ) ;
  76.         }
  77.         
  78.         $ post - > save( ) ;
  79.         
  80.         
  81.         //updateAll
  82.         $ sql = "SELECT * FROM {{post}} WHERE title LIKE '%" . "post" . "%'" ;
  83.         //SELECT * FROM tbl_post WHERE title LIKE '%post%'
  84.         
  85.         $ post = Post: : model( ) - > findBySql( $ sql ) ;
  86.         $ post - > updateAll( array ( 'update_time' = > time ( ) ) , 'id <= ?' , array ( '2' ) ) ;
  87.         //UPDATE `tbl_post` SET `update_time`=1302161123 WHERE id <= '2'
  88.         
  89.         $ post - > updateByPk( $ post - > id + 2, array ( 'title' = > 'update post 3' ) ) ;
  90.         $ post - > updateByPk( $ post - > id, array ( 'title' = > 'update post 3' ) , 'id = ?' , array ( '3' ) ) ;
  91.         
  92.         //updateCounter 更新某个字段的数值,一般是计数器(+/-)。
  93.         $ tag = $ this - > tags( 'tag1' ) ;
  94.         $ uTag = Tag: : model( ) - > updateCounters( array ( 'frequency' = > '3' ) , 'id = ?' , array ( '1' ) ) ;
  95.     }
  96.     
  97.     public function testDeletePost( ) {
  98.         $ post = $ this - > posts( 'post1' ) ;
  99.         $ post - > delete ( ) ;
  100.         
  101.         
  102.         $ this - > assertEquals( 1, $ post - > id) ; //删除数据库表中的记录,但是post的这个实例还在。
  103.         $ post2 = Post: : model( ) - > findByPk( $ post - > id) ;
  104.         $ this - > assertEquals( null , $ post2 ) ;
  105.         
  106.         //多条记录
  107.         $ delete = Post: : model( ) - > deleteAll( '(id = ? AND title = ?) || (id = \'4\') ' , array ( 1, 'post 1' ) ) ;
  108.         $ this - > assertEquals( 0, $ delete ) ;
  109.         
  110.         $ delete = Post: : model( ) - > deleteAllByAttributes( array ( 'id' = > '2' ) , 'content = ?' , array ( 'content2' ) ) ;
  111.         //DELETE FROM `tbl_post` WHERE `tbl_post`.`id`='2' AND (content = 'content2')
  112.         $ this - > assertEquals( 1, $ delete ) ;
  113.     }
  114. }
  115. ? >
分享到:
评论

相关推荐

    Yii Framework API手册

    Yii Framework API手册是针对开发者的一款详尽参考资料,它包含了Yii框架的所有核心组件、类库以及扩展的使用方法和接口信息。Yii是一个高性能、基于组件的PHP框架,用于开发Web 2.0应用。API(Application ...

    yii framework框架 + yii app模板(基本、高级).zip

    yii framework框架 + yii app模板(基本、高级)

    Yii Framework 2.0 权威指南 pdf格式 中文高清离线版 有书签

    ### Yii Framework 2.0 权威指南知识点详解 #### 一、Yii框架概述 - **定义**:Yii是一款高效能、基于组件的PHP框架,主要用于加速现代Web应用的开发进程。其名称“Yii”(发音类似于“易”)在中国文化中有“极致...

    Yii Framework 1.1.6

    9. **Gii代码生成工具**:Gii是Yii的一个代码生成工具,可以帮助开发者快速生成CRUD(创建、读取、更新、删除)操作和其他基础代码,大大加快开发速度。 10. **性能优化**:Yii通过预编译和运行时优化,如输出缓冲...

    Yii Framework v2.0.8.rar

    Yii Framework是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

    Yii Framework v1.1.19

    Yii是一个高性能的PHP5的web应用程序开发框架。通过一个简单的命令行工具 yiic 可以快速创建一个web应用程序的代码框架,开发者可以在生成的代码框架基础上添加业务逻辑,以快速完成应用程序的开发。

    yii framework 1.1.14 chm文档

    yii framework 1.1.14 chm文档,从官方html文档编译,展示效果很好.

    yii framework 中文完全手册

    这个“yii framework 中文完全手册”提供了详尽的指南,帮助开发者理解和利用Yii的强大功能。在深入探讨之前,我们先简单介绍一下Yii框架的基本概念。 Yii,发音为"易",寓意“简易”,是一个快速、安全且专业的...

    Yii Framework框架中事件和行为的区别及应用实例分析

    主要介绍了Yii Framework框架中事件和行为的区别及应用,结合实例形式分析了Yii Framework框架中事件和行为的相关概念、原理、区别及应用操作技巧,需要的朋友可以参考下

    YII Framework框架教程之使用YIIC快速创建YII应用详解

    主要介绍了YII Framework框架教程之使用YIIC快速创建YII应用的方法,详细分析说明了YII Framework框架使用YIIC命令行创建应用的相关技巧与注意事项,需要的朋友可以参考下

    Yii Framework v1.10 Class Reference

    Yii Framework 1.10的API手册

    yii2-ajaxcrud, 用于yii2的单一页面Ajax管理的Gii模板.zip

    yii2-ajaxcrud, 用于yii2的单一页面Ajax管理的Gii模板 yii2-ajaxcrud 用于yii2的单一页面Ajax管理的Gii模板 特性使用Ajax创建。读取。更新。删除页面批量删除 suportPjax小部件 suport导出函数( pdf,html,文本,cs

    yii-coding-standard:Yii Framework PHP CodeSniffer编码标准

    Yii Framework PHP CodeSniffer编码标准(官方仓库) 您可以在此处阅读有关Yii标准的信息: : 如何安装安装PEAR: http://pear.php.net/manual/en/installation.getting.php 安装... git clone git://github....

    PHP实例开发源码-Yii Framework php框架.zip

    PHP实例开发源码—Yii Framework php框架.zip PHP实例开发源码—Yii Framework php框架.zip PHP实例开发源码—Yii Framework php框架.zip

    yii framework 中文手册

    yii framework 最全最新的中文手册

    php_Yii Framework v2.0.4.zip.zip

    在“Yii Framework v2.0.4.zip”中,我们可以期待找到以下关键组成部分: 1. **框架核心**:包括核心类库,如基础组件、事件系统、依赖注入容器等,这些都是Yii运行的基础。 2. **MVC结构**:模型(Model)处理...

    yiiframework 中文 手册

    这个中文手册详尽地介绍了 Yii Framework 的各个方面,从框架基础到高级特性,无论你是初学者还是经验丰富的开发者,都能从中受益匪浅。通过深入学习和实践,你可以充分发挥 Yii 的潜力,构建出高效、可靠的 Web ...

    Yii Framework v1.1.10类参考中文手册

    Yii Framework v1.1.10类参考中文手册

    PhpStorm6 创建yii framework项目

    文档中提到的路径为`C:\Apache2.2\htdocs\yii\framework&gt;`,这是假设我们已经将Apache服务器安装在了C盘的Apache2.2目录下,并且Yii框架也放置在了对应的htdocs文件夹中。通过输入`cd`命令加上目录路径,即可切换到...

    基于PHP的Yii Framework php框架.zip

    8. **Gii代码生成工具**:Yii 的Gii工具可以帮助开发者自动生成CRUD(创建、读取、更新、删除)操作的代码,快速搭建基本的后台管理界面。 9. **单元测试和行为(Behaviors)**:Yii 支持PHPUnit进行单元测试,确保...

Global site tag (gtag.js) - Google Analytics