yii框架學習之---數據庫的使用

4.1、4.2Yii如何使用數據庫

 

1.Yii如何使用數據庫

 

Yii通過 數據庫訪問對象 來使用數據庫。

意思就是我們把連接的數據庫映射爲一個對象,這樣做就把對數據庫的操作變成了對對象的操作。

 

2.數據庫的連接

 

  • 當我們配置好數據庫連接文件之後,會自動創建一個yii\db\Connection對象,我們可以通過這個對象訪問數據庫。

        使用這個數據庫連接對象的寫法:Yii::$app->db

圖片截取自:魏曦教你學Yii2.0優酷視頻.

3.數據庫的查詢

(注:方法一是以整個數據庫爲對象來操作,而方法二是以一張表對應一個AR類來操作的,AR類是yii框架的靈魂,方法一併不           常用。)

方法一:

         使用 createCommand("SQL查詢語句") 方法來查詢數據庫。

  • <?php
    $a=Yii::$app->db->createCommand("select * from post")->queryAll();
    echo "<pre>";
    var_dump($a);
    
    //post是我的數據庫中已經建好的一張表
    //Yii::db->createCommand()返回一個對象,該對象調用queryAll()方法,結果返回一個數組
    ?>

    結果:

         

不過這種方法來訪問數據庫其實並不是很常用,原因如下:

 1.不同數據庫系統的SQL語句會有些差別,因此無法做到代碼使用於多種數據庫。

   想象一下當你的代碼遷移的時候,大工程面對的修改量是令人發怵的。

2.用數組,而不是面對對象的方式管理數據,代碼難爲難維護。

3.如果不小心,會留下SQL注入這種不安全因素。

 圖片截取自:魏曦教你學Yii2.0優酷視頻.

方法二:

         通過ActiveRecord(活動記錄類)來訪問數據庫。

  • 一個AR類關聯數據庫的一張表,每個AR類對象對應表中的一行。
  • AR對象的屬性,對應爲數據庫的列。
  • 可以直接以面向對象的方式來操縱數據表中的數據,這樣就不需要寫SQL語句就能實現數據庫的訪問。

思路圖:

         

數據查詢:

AR提供了兩種靜態方法來構建DB查詢,返回AR對象

  • yii\db\ActiveRecord::find()
<?php
$modl=Post::find()->where(['id'=>10])->one();
var_dump($model);
exit(0);
//Post是根據數據庫中的表post建立的AR類
//one()方法執行查詢,不是返會一個AR對象(一行)
//all()方法執行查詢,返回的是一個AR對象數組(多行)
?>

結果:可以看到返回的是Post類的對象,一個對象對應表中的一行。 

 

  • find()公共靜態方法創建了yii\ActiveQueryInterface實例,該實例去幫我們進行查詢。

圖片截取自:魏曦教你學Yii2.0優酷視頻.

靜態方法find()有兩種快捷方式:

$model=Post::findOne(1);  //查詢主關鍵字爲1的這條記錄
$model=Post::findAll(['status'=>1,]); //參數爲查詢條件,可以返回多個對象

 

  • yii\db\ActiveRecord::findBySql()
$sql="select * from post where status=1";
$posts=Post::findBySql($sql)->all();
//和createCommand()方法類似,都用到SQL語句
//但是返回的是AR對象,不再是字符型數組

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章