19

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

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

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

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

4

3 回答 3

34

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

$db = ConnectionManager::getDataSource('default');
$db->rawQuery($some_sql);
于 2012-06-15T13:53:00.987 回答
8

你应该这样跑

    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);
    }
于 2013-12-11T11:02:58.007 回答
3

rawQuery 不会返回数据,使用 $db->query 代替。

$db = ConnectionManager::getDataSource('default');
$data = $db->query($some_sql);
于 2016-07-03T06:13:03.737 回答