yii2.0數據庫查詢修改等方法


yii2.0學習有一段時間了,給大家分享一下一些簡單的查詢等如何操作。

查詢:(這里最前面的Test是引用的模型名)

Test::find()->all();    此方法返回所有數據;

Test::findAll(['status'=>1]);

這些查詢出來是對象形式,但是一般轉換成數組格式:

Test::find()->asArray()->all();     加上asArray()就取得數組形式的數據了,下面的自行添加。

Test::findOne($id);   此方法返回 主鍵 id=1  的一條數據(舉個例子);    

條件查詢:where  、andwhere  、 orwhere

Test::find()->where(['name' => 小明'])->one();   此方法返回 ['name' => '小明'] 的一條數據;    

Test::find()->where(['name' => '小明'])->all();   此方法返回 ['name' => '小明'] 的所有數據;    

Test::find()->andWhere(['sex' => '男', 'age' => '24'])->count('id');   統計符合條件的總條數;  

Test::find()->where(['and','id=1','id=2'])->all();     //id=1 and id=2

Test::find()->where(['or','id=1','id=2'])->all();      //id=1  or  id=2

sql語句查詢:

Test::findBySql('SELECT * FROM user')->all();  此方法是用 sql  語句查詢 user 表里面的所有數據;  

Test::findBySql('SELECT * FROM user')->one();  此方法是用 sql  語句查詢 user 表里面的一條數據;  

 

//查詢一條數據 

 

$sql = "SELECT id,name FROM tbl_user WHERE email='123@qq.com'  "

 

$users=Yii::app()->db->createCommand($sql)->queryRow(); 

 

其他輔助查詢:

Test::find()->one();    此方法返回一條數據;    

Test::find()->all();    此方法返回所有數據;    

Test::find()->count();    此方法返回記錄的數量;    

Test::find()->average();    此方法返回指定列的平均值;  

Test::find()->min();    此方法返回指定列的最小值    

Test::find()->max();    此方法返回指定列的最大值    

Test::find()->scalar();    此方法返回值的第一行第一列的查詢結果;    

Test::find()->column();    此方法返回查詢結果中的第一列的值;    

Test::find()->exists();    此方法返回一個值指示是否包含查詢結果的數據行;  

Test::find()->batch(10);  每次取 10 條數據  

Test::find()->each(10);  每次取 10 條數據, 迭代查詢

支持防sql注入:

$sql="select * from test where id=:id";
①    $result=Test::findBySql($sql,array(":id"=>1))->all();  
②    $result=Yii::$app->db->createCommand($sql)      //這種方法一般不用
            ->bindValue(':id',1)     //綁定參數
            ->queryOne();
 
模糊查詢:(title like "%tit%" and title like "%abc%")
 
$result=Test::find()->where(['like','title',['tit','abc']])->all();               //%會自動添加
 
范圍查詢:(以id為例)
 
$result=Test::find()->where(['>','id',0])->all();                     //查詢 id 大於 0 的
 
$result=Test::find()->where(['between','id',1,2])->all();        //查詢 id 1-2 的   
排序查詢:
$result=Test::find()->where($condition)->asArray()->orderBy('id DESC')->all();    根據條件以數組形式返回所有數據,並根據ID倒序
批量查詢:
  foreach(Test::find()->batch(1) as $tests){               //batch 是指每次拿一條(可任意指定)。放進 $tests 數組中
                               //操作 $tests 數組  
  }
        $users = Yii::app()->db->createCommand() 
            -> select ( '*'
            -> from ( 'tbl_user'
            ->queryAll(); 

  刪除操作:(delete)
$result=Test::find()->where(['id'=>1])->delete(); 
$result[0]->delete();    //也可以刪除其中的一項;
$result=Test::deleteAll('id>:id',array("id"=>0));          //刪除 id 大於 0的。 不寫參數刪除全部, 支持占位符形式
③(帶條件刪除)
$connection ->createCommand() ->delete('tbl_user', 'status = 0') ->execute(); 
④(使用sql刪除)
$connection ->createCommand('DELETE FROM tbl_user WHERE userid=:userid') ->execute();
⑤(查找並刪除)
$user = User::findOne(2); $user->delete(); // 輸出語句 // DELETE FROM `tbl_user` WHERE `id`='2' 
刪除多個:deleteAll()

Test::deleteAll('status = :status AND age > :age', [':age' => 20, ':status' => 'active']); //DELETE FROM `tbl_user`where age>20 and status='active'

Test::deleteAll([ 'and', 'type = :type_id',['not in', 'usercategoryid', $categoriesList]],[ ':type_id' => 2]); //DELETE FROM `tbl_user` WHERE (type = 2) AND (`usercategoryid` NOT IN (1, 2, 3))

Yii::app()->db->createCommand()->delete('tbl_user', 'id=:id',array( ':id' => 2)); 
 
           
修改:(先查詢后修改)
$result=Test::find()->where(['id'=>1])->one();          //返回一條
 $result->title="title4";                             //要修改的字段
 $result->save();                                      //保存數據
//修改 
  yii::$app->db->createCommand()->update('yii_company_info',
                ["company_name"=>$company_name,"company_desc"=>$company_desc],
                "company_id=$company_id")->execute(); 
 
           
插入:
//使用user model添加數據 
$user = new Users(); //先實例化model
$user->setAttributes(array( 
         'username' => 'user1'
         'email' => '123@qq.com'
         'password' =>md5( "abcsd5a4" ), 
         'last_login' =>time() 
));
$user->save();
 Yii::$app->db->createCommand()->insert('tbl_user',array(  
           'username' => 'zhangsan' ,  
            'email' => 'zhangsan@zs.com' ))->execute(); 

 注:本文由王智磊(王大寶兒)整理編寫,也參考借鑒了很多大神的筆記,分享代碼,分享成功,歡迎各位交流和轉載,轉載請注明出處(博客園:王大寶兒)http://www.cnblogs.com/wangzhilei/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM