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

问题描述 投票:0回答:3

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

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

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

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

cakephp cakephp-2.0 cakephp-2.1
3个回答
35
投票

getDataSource()
方法在
CakePHP 2.x
中是静态的,所以你应该能够使用:

App::uses('ConnectionManager', 'Model');
    
$db = ConnectionManager::getDataSource('default');
$db->rawQuery($some_sql);

9
投票

你应该往这边跑

    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);
    }

3
投票

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

App::uses('ConnectionManager', 'Model');

$db = ConnectionManager::getDataSource('default');
$data = $db->query($some_sql);
© www.soinside.com 2019 - 2024. All rights reserved.