Kategori arşivi: Yii framework

Yii Database Connection

Merhaba arkadaşlar,

Daha önce multi database  bağlantısı yapmak için bir yazı hazırlamıştık. Şimdi ise main.php ‘ yi kullanmak istemeyip kendi connectionumuzu kendimiz oluştururuz sanamı kaldık eyyy main.php diyebileceğimiz zamanlar için bir connection bağlantısı yaratmayı göstereceğim. :)

Ben kendi denemelerimde Yii dökümantasyonundaki bağlantı örneğini denediğimde sıkıntı yaşadım. O yüzden çözüm olarak aşağıda gösterdiğim örnekteki gibi bir bağlantı tanımladım.

$connection 			        = 	new CDbConnection();

$connection->connectionString	        =	'mysql:host=' . $config["host"] . ';dbname=' . $config["name"];
$connection->username 			=	$config["user"];
$connection->password 			= 	$config["password"];
$connection->active 			=	true;
$connection->emulatePrepare		=	true;
$connection->charset 			=	'utf8';
$connection->enableProfiling 	        =	true;

Bundan  sonrası çocuk oyuncağı.. Geriye sql cümlelerinizi yazmak kalıyor.

$result = $connection->createCommand()
        ->select('table_name')
        ->from('INFORMATION_SCHEMA.TABLES')
        ->where("table_schema = '".$config['name']."'")
        ->queryall();

İşte bundan ibaret. iyi çalışmalar herkese

Yii framework multi database connection

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..

Gii modülü ve login problemi (Yii framework)

Merhaba sevgili arkadaşlar. Son zamanlarda yii ile ilgilenmeye başladım. Sanırım Yii ile uğraşan arkadaşların ortak söyleyebileceği en önemli konu, Yii’nin iyi bir dökümantasyona sahip olmaması olacaktır.  Bu nedenle Yii öğrenirken karşılaştığım problemleri ve çözümleri sizlerede fayda sağlayacağını düşünerek paylaşacağım.

Çalışmalarımın daha en başında Yii’nin gii modülünü çalıştırmakta sıkıntı yaşadım. Benzer sorunu yaşayabilecek arkadaşlar için çözüm olabilecek bir konuyu paylaşmak istedim.  Yii frameworkun kurulumu hakkında yeterince yazı yazıldığını düşünerek bu konunun üzerinde fazla durmayacağım (yinede takılan arkadaşlar olursa yardımcı olmaya çalışırım)

Yii’nin en güzel yanlarından biri olan gii modülü projelerinizde model- controller gibi yapılarınızı hızlıca oluştmanıza yardımcı oluyor ve teferruatla  uğraşmak yerine esas kodlarınıza daha fazla vakit ayırmanıza imkan sağlıyor.  İşte bende bu modülden faydalanmak isterken modüle login olmakta sıkıntı yaşadım. Eğer sizde aynı sıkıntıyı yaşıyorsanız  muhtemelen session.save_path probleminiz vardır.

Sorunun çözümü için öncelikle phpinfo() komutunu kullanarak session.save_path‘inizin nerede olduğunu öğrenin. sonra bu path için yazma izni verin. Benim dizinim “/home/alper/workspace/yiiProje/tmp” olarak tanımlanmış. Aşağıdaki komutu  kullanarak bu dizine yazma izni veriyoruz.

chmod -R 777 /home/alper/workspace/yiiProje/tmp

Sorun çözüldü.
Selam ve sevgiler..