我正在尝试在AppController上运行一个没有与之关联的Model的表。我不想使用模型,因为这个查询会在每个请求上触发,我猜使用模型会使它慢一些。
我在一个论坛中发现,这可以通过CakePHP 1.3中的以下代码实现:
$db = ConnectionManager::getInstance();
$conn = $db->getDataSource('default');
$conn->rawQuery($some_sql);
但这在CakePHP 2.1.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);