Yii 2 16データベースを使用した操作の要約

9776 ワード

オブジェクトアクション
検索
//1.    
$admin=Admin::model()->findAll($condition,$params);
$admin=Admin::model()->findAll("username=:name",array(":name"=>$username));
 
$infoArr= NewsList::model()->findAll("status = '1' ORDER BY id DESC limit 10 ");
 
//2. findAllByPk(              ,        )
$admin=Admin::model()->findAllByPk($postIDs,$condition,$params);
$admin=Admin::model()->findAllByPk($id,"name like :name and age=:age",array(':name'=>$name,'age'=>$age));
$admin=Admin::model()->findAllByPk(array(1,2));
 
//3.findAllByAttributes (              ,       ,         )
$admin=Admin::model()->findAllByAttributes($attributes,$condition,$params);
$admin=Admin::model()->findAllByAttributes(array('username'=>'admin'));
 
//4.findAllBySql (      SQL        )
$admin=Admin::model()->findAllBySql($sql,$params);
$admin=Admin::model()->findAllBySql("select * from admin where username like :name",array(':name'=>'%ad%'));
User::find()->all();             ;
User::findOne($id);            id=1       (    ); 
User::find()->where(['name' => '   '])->one();         ['name' => '   ']      ;
User::find()->where(['name' => '   '])->all();         ['name' => '   ']      ;
User::find()->orderBy('id DESC')->all();           ;
User::findBySql('SELECT * FROM user')->all();        sql       user         ;
User::findBySql('SELECT * FROM user')->one();        sql       user         ;
User::find()->andWhere(['sex' => ' ', 'age' => '24'])->count('id');             ;
User::find()->one();             ;
User::find()->all();             ;
User::find()->count();              ;
User::find()->average();                ;
User::find()->min();                 ;
User::find()->max();                 ;
User::find()->scalar();                      ;
User::find()->column();                    ;
User::find()->exists();                          ;
User::find()->batch(10);      10     
User::find()->each(10);      10    ,     
 、       
//           , :findByPk(1);
$admin=Admin::model()->findByPk($postID,$condition,$params);
$admin=Admin::model()->findByPk(1);
 
//             ,     ,           
$row=Admin::model()->find($condition,$params);
$row=Admin::model()->find('username=:name',array(':name'=>'admin'));
 
//              ,       ,         ,          
$admin=Admin::model()->findByAttributes($attributes,$condition,$params);
$admin=Admin::model()->findByAttributes(array('username'=>'admin'));
 
//      SQL        ,           
$admin=Admin::model()->findBySql($sql,$params);
$admin=Admin::model()->findBySql("select * from admin where username=:name",array(':name'=>'admin'));
 
//     SQL   ,   find        
$criteria=newCDbCriteria; 
$criteria->select='username';// only select the 'title' column 
$criteria->condition='username=:username';    //   ,         ,         .    addCondition
$criteria->params=array(":username=>'admin'");
$criteria->order ="id DESC";
$criteria->limit ="3";
$post=Post::model()->find($criteria);// $params isnot needed 
 
//        
$criteria= new CDbCriteria;     
$criteria->addCondition("id=1");//    , where id = 1 
$criteria->addInCondition('id',array(1,2,3,4,5));//  where id IN (1,2,3,4,5,); 
$criteria->addNotInCondition('id',array(1,2,3,4,5));//       , NOT IN 
$criteria->addCondition('id=1','OR');//  OR  ,       ,    OR  AND 
$criteria->addSearchCondition('name','  ');//    ,     。。where name like '%  %' 
$criteria->addBetweenCondition('id', 1, 4);//between 1 and 4
$criteria->compare('id', 1);   //        ,             addCondition  addInCondition.
$criteria->compare('id',array(1,2,3));   //               addInCondition 
 
 
$criteria->select ='id,parentid,name';//         ,  select='*'; 
$criteria->join ='xxx'; //    
$criteria->with ='xxx'; //  relations  
$criteria->limit = 10;   // 1   ,    0,      
$criteria->offset = 1;  //      ,    limit 10 offset 1,     。limit 1,10 
$criteria->order ='xxx DESC,XXX ASC' ;//     
$criteria->group ='group   '; 
$criteria->having ='having    '; 
$criteria->distinct = FALSE;//      
 、    ,         
//                      ,    int   
$n=Post::model()->count($condition,$params);
$n=Post::model()->count("username=:name",array(":name"=>$username));
 
//      SQL              ,    int   
$n=Post::model()->countBySql($sql,$params);
$n=Post::model()->countBySql("select * from admin where username=:name",array(':name'=>'admin'));
 
//                        ,         true,      
$exists=Post::model()->exists($condition,$params);
$exists=Post::model()->exists("name=:name",array(":name"=>$username));
 、  
$admin= new Admin;       
$admin->username =$username;
$admin->password =$password;
if($admin->save() > 0){echo "    "; }else{echo "    "; }
 、  
Post::model()->updateAll($attributes,$condition,$params);
$count=Admin::model()->updateAll(array('username'=>'11111','password'=>'11111'),'password=:pass',array(':pass'=>'1111a1'));
if($count> 0){ echo "    "; }else{echo "    "; }
 
$rt= PostList::model()->updateAll(array('status'=>'1'),'staff_id=:staff AND host_id=:host',array(':staff'=>$staff_id,':host'=>$host_id));
 
//$pk  ,             ,$attributes          ,$condition  ,$params    
Post::model()->updateByPk($pk,$attributes,$condition,$params);
$count=Admin::model()->updateByPk(1,array('username'=>'admin','password'=>'admin'));
$count=Admin::model()->updateByPk(array(1,2),array('username'=>'admin','password'=>'admin'),'username=:name',array(':name'=>'admin'));
if($count>0){echo "    "; }else{echo "    "; }
 
Post::model()->updateCounters($counters,$condition,$params);
$count=Admin::model()->updateCounters(array('status'=>1),'username=:name',array(':name'=>'admin'));
if($count> 0){ echo "    "; }else{echo "    "; }
//array('status'=>1)       admin     username='admin',        status     1
 、  
//deleteAll
Post::model()->deleteAll($condition,$params);
$count= Admin::model()->deleteAll('username=:name and password=:pass',array(':name'=>'admin',':pass'=>'admin'));
$count= Admin::model()->deleteAll('id in("1,2,3")');//  id      
if($count>0){echo"    "; }else{echo "    "; }
 
//deleteByPk
Post::model()->deleteByPk($pk,$condition,$params);
$count= Admin::model()->deleteByPk(1);
$count=Admin::model()->deleteByPk(array(1,2),'username=:name',array(':name'=>'admin'));
if($count>0){echo "    "; }else{echo "    "; }


直接データベース操作
検索
//createCommand(     SQL  )
$sql= "SELECT u.account,i.* FROM sys_user as u left join user_info as i on u.id=i.user_id";
$rows=Yii::$app->db->createCommand($sql)->query();
foreach($rows as $k => $v){
    echo$v['add_time'];
}

      :

$command = $connection->createCommand('SELECT * FROM post');
$posts = $command->queryAll();
    :

$command = $connection->createCommand('SELECT * FROM post WHERE id=1');
$post = $command->queryOne();
      :

$command = $connection->createCommand('SELECT title FROM post');
$titles = $command->queryColumn();
     /   :

$command = $connection->createCommand('SELECT COUNT(*) FROM post');
$postCount = $command->queryScalar();
 
  

更新

$command = $connection->createCommand('UPDATE post SET status=1 WHERE id=1');
$command->execute();

更新削除の挿入
// INSERT
$connection->createCommand()->insert('user', [
    'name' => 'Sam',
    'age' => 30,
])->execute();

// INSERT       
$connection->createCommand()->batchInsert('user', ['name', 'age'], [
    ['Tom', 30],
    ['Jane', 20],
    ['Linda', 25],
])->execute();

// UPDATE
$connection->createCommand()->update('user', ['status' => 1], 'age > 30')->execute();

// DELETE
$connection->createCommand()->delete('user', 'status = 0')->execute();

取引
 
//       (               )
$dbTrans= Yii::app()->db->beginTransaction();
try{
    $post= new Post;
    $post->'title'= 'Hello dodobook!!!';
    if(!$post->save())throw newException("Error Processing Request", 1);
    $dbTrans->commit();
//  $this->_end(0,'    !!!');
}catch(Exception$e){
    $dbTrans->rollback();
//  $this->_end($e->getCode(),$e->getMessage());

参照先:
http://blog.csdn.net/yafei450225664/article/details/41543591
http://www.kuitao8.com/20150115/3471.shtml