• <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 - 我并不覺的自豪,我所嘗試的事情都失敗了······習(xí)慣原本生活的人不容易改變,就算現(xiàn)狀很糟,他們也很難改變,在過程中,他們還是放棄了······他們一放棄,大家就都是輸家······讓愛傳出去,很困難,也無法預(yù)料,人們需要更細(xì)心的觀察別人,要隨時(shí)注意才能保護(hù)別人,因?yàn)樗麄兾幢刂雷约阂裁础ぁぁぁぁ?/span>
            1. 目錄
              一、增刪查改
              二、驗(yàn)證規(guī)則
              三、事務(wù)管理
              四、名字空間。參考:Yii數(shù)據(jù)庫操作——名字空間(named scopes)的三種用法

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

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

              (2) 某一個(gè)字段的值為缺省值時(shí),可以在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,查詢【待補(bǔ)充】
              (1) 通過主鍵查詢
              find("postID=:postID", array(':postID' => postID)
              findByPk($id) // 單主鍵

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



              3,更新【待補(bǔ)充】
              先find,并將對(duì)應(yīng)字段賦新值,再保存

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


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

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

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


              二、驗(yàn)證規(guī)則
              驗(yàn)證規(guī)則(Data validation)發(fā)生在調(diào)用save()方法的時(shí)候。驗(yàn)證是基于在rules()方法中的定義。

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

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

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

              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;}


              注意:里面的驗(yàn)證檢驗(yàn)非常重要,否則用戶可能繞過授權(quán)。


              三、事務(wù)管理
              dbConnection是CDbConnection的實(shí)例
              官方文檔

              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();}



              實(shí)際項(xiàng)目

              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()));	}



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

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

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

            posted on 2012-01-04 16:18 小果子 閱讀(834) 評(píng)論(0)  編輯 收藏 引用 所屬分類: 框架
            99久久无码一区人妻| 久久久久久久久66精品片| 久久精品国产精品青草app| 久久最新精品国产| 久久婷婷五月综合97色直播| 人妻精品久久久久中文字幕一冢本| 久久精品视频免费| 欧美国产成人久久精品| 国产综合久久久久久鬼色| 久久久免费观成人影院| 精品国产乱码久久久久久郑州公司 | 久久99久久99精品免视看动漫| 久久精品免费一区二区三区| 久久人做人爽一区二区三区| 亚洲天堂久久精品| 久久久久久久久无码精品亚洲日韩 | 久久久久亚洲av成人网人人软件 | 久久这里的只有是精品23| 99久久国产主播综合精品| 久久久久人妻一区精品色| 久久久久久综合网天天| 欧美一级久久久久久久大| 欧美精品一区二区精品久久| 亚洲精品无码久久久影院相关影片| 午夜肉伦伦影院久久精品免费看国产一区二区三区 | 亚洲色大成网站www久久九| 香蕉久久永久视频| 久久综合伊人77777| 国产国产成人久久精品| 久久精品国产一区| 国产精品久久久久久久久免费| 久久久久亚洲AV成人片| 伊人久久大香线蕉亚洲五月天| 色狠狠久久综合网| 久久精品中文无码资源站| 久久亚洲日韩看片无码| 色天使久久综合网天天| 久久人人爽人人爽人人片AV东京热| 国产精品99久久久精品无码 | 国产综合成人久久大片91| 久久精品国产免费一区|