2016-03-08 58 views
1

我有這樣的功能:配置app() - > db;

function getCompensation($id) 
{ 
    $dbh = app()->db; 
    try { 
     $amount = $dbh->createCommand() 
     ->select('data') 
     ->from('compensation_table') 
     ->where('id = :id', array(':id'=>$id)) 
     ->queryRow(); 
    }catch (Exception e) 
     $e->getMessage(); 
    { 
    return $amount; 
} 

但是似乎應用() - >分貝;並不像它應該那樣行事,因爲我沒有收到任何數據。我在另一個項目中使用了相同的方法,但我不確定它是如何配置的。我想連接到同一個數據庫。我們可以在函數內部配置它嗎?

回答

1

應該是你必須指定$金額=的Yii ::應用程序() - > DB-> createCommand()

function getCompensation($id) 
{ 

    try { 
     $amount = Yii::app()->db->createCommand() 
     ->select('data') 
     ->from('compensation_table') 
     ->where('id = :id', array(':id' =>$id)) 
     ->queryRow(); 
    }catch (Exception e) 
     $e->getMessage(); 
    { 
    return $amount; 
} 

,如果你有一列 '數據'

您可以訪問用例如柱:

echo $amount->data; 

這是

proteteced/config/main.php 
組分分貝部的樣品

..... 
return array(


    .... 

    // application components 
    'components'=>array(
     ...... 

     'db'=>array(
     'connectionString' => 'mysql:host=localhost;dbname=my_databasename', 
     'emulatePrepare' => true, 
     'username' => 'my_username', 
     'password' => 'my_pwd', 
     'charset' => 'utf8', 
    ), 
+0

如何指定app() - > db連接到哪個數據庫? – jarvan

+1

通常情況下,db連接在protected/config/main.php組件中指定 - > db ....你需要一個樣本? – scaisEdge

+0

是的,如果可以的話謝謝。 – jarvan