2012-06-15 17 views
18

modelinde herhangi bir model olmadan sorgu çalıştırın. AppController'da sorgulanmış bir tabloya sahip bir tablo üzerinde çalışıyorum. Bir Model kullanmak istemiyorum, çünkü bu sorgu her istekte ateşlenecek ve bir Model kullanmak sanırım bunu biraz daha yavaşlatacaktı.CakePHP 2.1.x - AppController

Bu

$db = ConnectionManager::getInstance(); 
$conn = $db->getDataSource('default'); 
$conn->rawQuery($some_sql); 

CakePHP'de 1.3 aşağıdaki kodla sağlanabilir Ama bu CakePHP'de 2.1.3 çalışmadığını bir forumda öğrendim. Herhangi bir yardım mutluluk duyacaktır.

$db = ConnectionManager::getDataSource('default'); 
$db->rawQuery($some_sql); 
+1

Eğer sadece bir sorgu (modelin kullanarak sorgu()) çalıştırırsanız yavaş yerinde duruyor bir model doenst kullanılarak – mark

+0

tam olarak ne her istekte veritabanından almak gerekiyor? Bu ayrıca, başvuru için her istek için bir veritabanı isteği yapmak anlamına gelir. Bu, DB yükünü artıracaktır. Eğer bir konfigürasyon yüklüyorsanız, onu bir dosyadan yüklemek ve “Objectifying” yapmak daha iyi olabilir. –

+0

sql-sorgunuzun verilerini bu bağlamda geri almak için, bkz http://stackoverflow.com/q/21612950/287948 –

cevap

32

getDataSource() yöntem, CakePHP 2.x statik veri yerine, $ db-> sorgusunu kullanın.

$db = ConnectionManager::getDataSource('default'); 
$data = $db->query($some_sql); 
+0

Teşekkürler ... bu yardımcı oldu :) –

+0

Ben de aynı şeyi yaptım bana hata mesajını gösteriyor aşağıda belirtilen. Sadece değişkenler referans ile belirtilmelidir. Bana hala ne gibi değişiklikler yapmam gerektiğini söyler misin? –

+4

'App :: uses (' ConnectionManager ',' Model '); 'yanı sıra – Richard

7

Eğer

App::uses('ConnectionManager', 'Model'); 
    $db = ConnectionManager::getDataSource('default'); 
    if (!$db->isConnected()) { 
     $this->Session->setFlash(__('Could not connect to database.'), 'default',   array('class' => 'error')); 
    } else { 
     $db->rawQuery($some_sql); 
    } 
1

rawQuery döndürmez bu şekilde çalışmalıdır: Kullanmak gerekir böylece Thanks :)