Quý ông này ( Olivier
) có cùng một vấn đề! (Một năm trước) Anh ấy đã viết
một bản điều chỉnh nhỏ cho Controller
S! Nó khá nhỏ và hóa ra, nó hoạt động trong 1.3 và 2.x .
Nhưng dù sao, đây là giải pháp cuối cùng của tôi, mà tôi đưa vào app/Model/AppModel.php
:
class AppModel extends Model
{
/**
* Connects to specified database
*
* @param String name of different database to connect with.
* @param String name of existing datasource
* @return boolean true on success, false on failure
* @access public
*/
public function setDatabase($database, $datasource = 'default')
{
$nds = $datasource . '_' . $database;
$db = &ConnectionManager::getDataSource($datasource);
$db->setConfig(array(
'name' => $nds,
'database' => $database,
'persistent' => false
));
if ( $ds = ConnectionManager::create($nds, $db->config) ) {
$this->useDbConfig = $nds;
$this->cacheQueries = false;
return true;
}
return false;
}
}
Và đây là cách tôi sử dụng nó trong app/Controller/CarsController.php
của mình :
class CarsController extends AppController
{
public function index()
{
$this->Car->setDatabase('cake_sandbox_client3');
$cars = $this->Car->find('all');
$this->set('cars', $cars);
}
}
Tôi cá, tôi không phải là người đầu tiên hoặc cuối cùng với vấn đề này. Vì vậy, tôi thực sự hy vọng thông tin này sẽ tìm thấy mọi người và cộng đồng CakePHP.