Merhaba sevgili arkadaşlar. Yii framework ile çalışmalarımız devam ediyor. Bu sefer birden fazla database ile çalışmak için config ayarlarınızda yapmanız gereken basit ama önemli bir noktaya dikkat çekmek istiyorum.
Projeleriniz büyüdükçe mutlaka ihtiyaç duyacağınız bu konuda yapmanız gereken çok basit. “main.php” dosyanızın database ile ilgili olan kısmına geliyorsunuz, zaten default olarak tanımlanmıış bir veritabanınız vardır. Benim main.php dosyamda da aşağıdaki gibi bir bağlantı tanımlı durumda:
.... 'db'=>array( 'connectionString' => 'mysql:host=' . DB_ADDRESS . ';dbname=' . DB_NAME, 'emulatePrepare' => true, 'username' => DB_USERNAME, 'password' => DB_PASSWORD, 'charset' => 'utf8', 'enableProfiling' => true )
İkinci bir database bağlantısı için aşağıdaki kodu ekliyorum:
... 'db'=>array( 'connectionString' => 'mysql:host=' . DB_ADDRESS . ';dbname=' . DB_NAME, 'emulatePrepare' => true, 'username' => DB_USERNAME, 'password' => DB_PASSWORD, 'charset' => 'utf8', 'enableProfiling' => true ), 'db2'=>array( 'connectionString' => 'mysql:host=' . DB_ADDRESS2 . ';dbname=' . DB_NAME2, 'emulatePrepare' => true, 'username' => DB_USERNAME2, 'password' => DB_PASSWORD2, 'charset' => 'utf8', 'enableProfiling' => true, 'class' => 'CDbConnection' ), ...
Buradaki önemli ve kritik nokta bağlantı yaptığımız diğer veritabanları için ‘class’ => ‘CDbConnection’ parametresini ekliyoruz. Config aşamasında bunları yaptıktan sonra sıra geldi database bağlantılarımızı kullanmaya. Örnek olarak “db” bağlantısından “user” tablosundaki verileri çekelim ve “db2” bağlantısından da “city” tablosundaki verileri çekelim.
<?php ... $listUsertoDb = Yii::app()->db->createCommand() ->select('*') ->from('user') ->where('status=:status', array(':status'=>1 )) ->queryAll(); $listCitytoDb2 = Yii::app()->db2->createCommand() ->select('*') ->from('city') ->queryAll();
Evet olay bundan ibaret :)
Görüşmek dileğiyle..