2012-06-15 9 views
18

関連付けられているモデルのないテーブルでAppControllerでクエリを実行しようとしています。私はモデルを使用したくないのです。なぜなら、このリクエストはすべてのリクエストで発生するため、モデルを使用すると少し遅くなります。CakePHP 2.1.x - AppControllerでモデルを使用しないクエリを実行します。

私は、これは、CakePHP 1.3で次のコードで

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

を達成することができます。しかし、これはCakePHPの2.1.3で動作していないことを1つのフォーラムで見つけました。 ご協力いただければ幸いです。

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

あなたは(モデルのクエリを使用して())だけでクエリを実行する場合、それはどの遅く作るdoenst – mark

+0

あなたはすべてのリクエストに応じて、データベースから取得するために、正確に何が必要ですか? これは、アプリケーションへのすべての要求に対してデータベース要求を行うことも意味します。これにより、DB負荷が増加します。いくつかの設定を読み込んでいるなら、ファイルから読み込んで "Objectifying"するほうが良いでしょう。 –

+0

このコンテキストでSQLクエリのデータを取得するには、http://stackoverflow.com/q/21612950/287948を参照してください。 –

答えて

32

getDataSource()方法は、CakePHPの2.xで静的ですデータの代わりに$ db-> queryを使用してください。モデルを使用して

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

ありがとうございました。それは助けました。 –

+0

私は同じことをしました。以下に述べる。参照のみで変数を割り当てる必要があります。まだ何が変わっているのか教えていただけますか? –

+4

'App :: uses( 'ConnectionManager'、 'Model');'も必要です – Richard

7

はあなたが

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は戻りません。この方法を実行してください:あなたが使用することができるはずですので 感謝:)

関連する問題