• <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,并將對應(yīng)字段賦新值,再保存

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


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

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

              (2) 如果是多條記錄(類級別刪除,不需要先載入記錄)
              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 小果子 閱讀(838) 評論(0)  編輯 收藏 引用 所屬分類: 框架
            久久精品国产精品亜洲毛片| 综合久久一区二区三区 | 日韩亚洲欧美久久久www综合网 | 国产aⅴ激情无码久久| 亚洲精品乱码久久久久66| 久久精品www人人爽人人| 久久精品国产亚洲沈樵| 伊人久久大香线蕉AV一区二区| 久久久久人妻精品一区| 国产精品成人99久久久久 | 很黄很污的网站久久mimi色 | 99久久精品费精品国产一区二区| 免费国产99久久久香蕉| 久久伊人精品青青草原日本| 人妻无码αv中文字幕久久琪琪布| 99久久精品国产毛片| 亚洲精品无码久久久久久| 国内精品久久久久久不卡影院| 亚洲精品乱码久久久久久久久久久久 | 欧美久久一区二区三区| 97久久天天综合色天天综合色hd| 日本加勒比久久精品| 97精品伊人久久久大香线蕉| 久久亚洲AV成人无码电影| 亚洲婷婷国产精品电影人久久| 99久久99久久精品国产片果冻| 国产精品无码久久综合| 影音先锋女人AV鲁色资源网久久| 中文字幕精品久久久久人妻| 久久亚洲欧洲国产综合| 三级片免费观看久久| 久久久久久无码国产精品中文字幕 | 午夜精品久久久久久久无码| 久久午夜电影网| 久久国产成人精品麻豆| 久久精品成人免费看| 久久免费小视频| 久久中文字幕无码专区| 久久AⅤ人妻少妇嫩草影院| 久久人人超碰精品CAOPOREN| 免费精品国产日韩热久久|