モデルが関連付けられていないテーブルに対してAppControllerでクエリを実行しようとしています。モデルを使用したくないのは、このクエリがすべてのリクエストで発生するためです。モデルを使用すると、少し遅くなると思います。
あるフォーラムで、CakePHP1.3の次のコードでこれを実現できることがわかりました。
$db = ConnectionManager::getInstance();
$conn = $db->getDataSource('default');
$conn->rawQuery($some_sql);
しかし、これはCakePHP2.1.3では機能しません。どんな助けでもいただければ幸いです。ありがとう:)
getDataSource()
メソッドはCakePHP2.xでは静的であるため、次を使用できるはずです。
$db = ConnectionManager::getDataSource('default');
$db->rawQuery($some_sql);
このように実行する必要があります
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);
}
rawQueryはデータを返しません。代わりに、$ db-> queryを使用してください。
$db = ConnectionManager::getDataSource('default');
$data = $db->query($some_sql);