web-dev-qa-db-ja.com

CakePHP2.1.x-AppControllerにモデルなしでクエリを実行する

モデルが関連付けられていないテーブルに対してAppControllerでクエリを実行しようとしています。モデルを使用したくないのは、このクエリがすべてのリクエストで発生するためです。モデルを使用すると、少し遅くなると思います。

あるフォーラムで、CakePHP1.3の次のコードでこれを実現できることがわかりました。

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

しかし、これはCakePHP2.1.3では機能しません。どんな助けでもいただければ幸いです。ありがとう:)

19
Atul Dravid

getDataSource()メソッドはCakePHP2.xでは静的であるため、次を使用できるはずです。

$db = ConnectionManager::getDataSource('default');
$db->rawQuery($some_sql);
34
dhofstet

このように実行する必要があります

    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);
    }
8
Manish Patel

rawQueryはデータを返しません。代わりに、$ db-> queryを使用してください。

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