我正在尝试在 AppController 中对没有关联模型的表运行查询。我不想使用模型,因为这个查询会在每个请求上触发,我想使用模型会让它变慢一点。
我在一个论坛上发现这可以通过 CakePHP 1.3 中的以下代码来实现
$db = ConnectionManager::getInstance();
$conn = $db->getDataSource('default');
$conn->rawQuery($some_sql);
但这在 CakePHP 2.1.3 中不起作用。 任何帮助,将不胜感激。 谢谢:)
getDataSource()
方法在CakePHP 2.x
中是静态的,所以你应该能够使用:
App::uses('ConnectionManager', 'Model');
$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 代替。
App::uses('ConnectionManager', 'Model');
$db = ConnectionManager::getDataSource('default');
$data = $db->query($some_sql);