CakePHP 2.1.x - 在AppController中运行没有任何模型的查询

时间:2012-06-15 09:45:32

标签: cakephp cakephp-2.0 cakephp-2.1

我正在尝试在AppController上运行一个没有与之关联的Model的表。我不想使用模型,因为这个查询会在每个请求上触发,我猜使用模型会使它慢一些。

我在一个论坛中发现,这可以通过CakePHP 1.3中的以下代码实现:

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

但这在CakePHP 2.1.3中不起作用。 任何帮助,将不胜感激。 谢谢:))

3 个答案:

答案 0 :(得分:33)

getDataSource()方法在CakePHP 2.x中是静态的,因此您应该可以使用:

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

答案 1 :(得分: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);
    }

答案 2 :(得分:3)

rawQuery不会返回数据,而是使用$ db->查询。

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