• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            xiaoguozi's Blog
            Pay it forword - 我并不覺的自豪,我所嘗試的事情都失敗了······習慣原本生活的人不容易改變,就算現狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預料,人們需要更細心的觀察別人,要隨時注意才能保護別人,因為他們未必知道自己要什么·····
            1. 目錄
              一、增刪查改
              二、驗證規則
              三、事務管理
              四、名字空間。參考:Yii數據庫操作——名字空間(named scopes)的三種用法

              一、增刪查改
              1,創建
              $post = new Post;
              $post->title = "";
              $post->content = "";
              $post->created_at = "CDbExpression('NOW()')";
              $post->save();

              (1) 插入后可立即獲得主鍵id。
              $id = $post->id;   // 前提是auto_increment

              (2) 某一個字段的值為缺省值時,可以在models/Class.php中修改
              Class Post extends CActiveRecord{
              public $title = 'new title';
              $post = new Post;
              echo $post->title; // 輸出是: new title
              }

              (3) 使用CDbExpression
              $post->create_time = new CDbExpression('NOW()');


              2,查詢【待補充】
              (1) 通過主鍵查詢
              find("postID=:postID", array(':postID' => postID)
              findByPk($id) // 單主鍵

              (2) 通過非主鍵查詢
              find("postID=:postID", array(':postID' => postID)
              findAll( id = $id )
              findAll( id IN ( $id ) )



              3,更新【待補充】
              先find,并將對應字段賦新值,再保存

              可以通過CActiveRecord::isNewRecord來判斷是新建,還是更新。


              4,刪除
              (1) 如果是一條記錄
              先找到后刪除
              $post=Post::model->findByPk(10);
              $post->delete();

              直接通過主鍵刪除(類級別刪除,不需要先載入記錄)
              Post::model->deleteByPk(10);

              (2) 如果是多條記錄(類級別刪除,不需要先載入記錄)
              Post::model->deleteAll();


              二、驗證規則
              驗證規則(Data validation)發生在調用save()方法的時候。驗證是基于在rules()方法中的定義。

              if( $post->save() ){
              // 驗證通過
              } else {
              // 驗證失敗。通過getErrors()返回錯誤信息。
              }

              獲取用戶從表單提交的數據
              $post->title   = $_POST['title'];
              $post->content = $_POST['content'];
              $post->save();

              如果多了,可以通過下面的方式減輕(alleviate)復雜程度:

              Php代碼
              1. $post->attributes = $_POST['Post'];   
              2. $post->save();   
              3. //類似于:   
              4. foreach($_POST['Post'as $name=>$value){   
              5.     if($name is a safe attribute)   
              6.         $model->$name = $value;   
              7. }  
              $post->attributes = $_POST['Post'];$post->save();//類似于:foreach($_POST['Post'] as $name=>$value){	if($name is a safe attribute)		$model->$name = $value;}


              注意:里面的驗證檢驗非常重要,否則用戶可能繞過授權。


              三、事務管理
              dbConnection是CDbConnection的實例
              官方文檔

              Php代碼
              1. $model = Post::model();   
              2. $transaction = $model->dbConnection->beginTransaction();   
              3. try{   
              4.     $post = $model->findByPk(10);   
              5.     $post->title = 'new post title';   
              6.     $post->save();   
              7.     $transaction->commit();   
              8. } catch (Exception $e){   
              9.     $transaction->rollback();   
              10. }  
              $model = Post::model();$transaction = $model->dbConnection->beginTransaction();try{	$post = $model->findByPk(10);	$post->title = 'new post title';	$post->save();	$transaction->commit();} catch (Exception $e){	$transaction->rollback();}



              實際項目

              Php代碼
              1. $trans = Yii::app()->db->beginTransaction();   
              2. try {   
              3.     $manufacturer = new Manufacturer();    
              4.     $manufacturer->name = $name;   
              5.     $manufacturer->email = $email;   
              6.     $manufacturer->save();   
              7.     $trans->commit();   
              8. } catch (Exception $e) {   
              9.     $trans->rollback();   
              10.     $this->response(array('status' => 1, 'msg' => $e->getMessage()));      
              11. }  
              $trans = Yii::app()->db->beginTransaction();try {	$manufacturer = new Manufacturer();		$manufacturer->name = $name;	$manufacturer->email = $email;	$manufacturer->save();	$trans->commit();} catch (Exception $e) {	$trans->rollback();	$this->response(array('status' => 1, 'msg' => $e->getMessage()));	}



              其實使用的時候跟凡客體的我是凡客或淘寶體的親一樣。

              注:Yii::app()后面的db在../config/main.php中已配置

              Php代碼
              1. 'components'=>array(   
              2.     'user'=>array('allowAutoLogin'=>true,),   
              3.     'db'=>array("數據庫連接參數"),   
              4. )  

            posted on 2012-01-04 16:18 小果子 閱讀(834) 評論(0)  編輯 收藏 引用 所屬分類: 框架
            99久久精品免费国产大片| 一本久久a久久精品综合夜夜| 伊人久久精品影院| 色综合久久中文字幕无码| 99久久精品无码一区二区毛片| 久久久久久亚洲精品无码| 亚洲精品tv久久久久久久久| 91精品无码久久久久久五月天| 狠狠色丁香久久婷婷综合_中| 7777久久亚洲中文字幕| 久久夜色精品国产亚洲av| 91精品国产高清久久久久久io| 久久丝袜精品中文字幕| 国产精品久久久久天天影视| 精品熟女少妇AV免费久久| 99久久精品免费| 国产91色综合久久免费| 亚洲综合日韩久久成人AV| 久久性生大片免费观看性| 久久亚洲精品中文字幕三区| 亚洲∧v久久久无码精品| 一本久久综合亚洲鲁鲁五月天| 欧美激情精品久久久久| 久久精品国产亚洲AV大全| 久久久久久综合网天天| 亚洲精品第一综合99久久| 久久久久久综合一区中文字幕| 久久精品夜夜夜夜夜久久| 久久无码专区国产精品发布| 久久综合狠狠综合久久97色| 很黄很污的网站久久mimi色| 99re久久精品国产首页2020| 国产午夜福利精品久久2021| 午夜天堂精品久久久久| 波多野结衣AV无码久久一区| 久久人与动人物a级毛片| 97视频久久久| 久久SE精品一区二区| 亚洲精品国精品久久99热一| 日产精品久久久久久久| 老色鬼久久亚洲AV综合|