Как я могу подключиться ко второй базе данных с помощью моего приложения CakePHP - PullRequest
0 голосов
/ 14 марта 2012

Требование моего приложения состоит в том, чтобы отобразить данные таблицы базы данных magento, например, admin_user, который находится на локально подключенном компьютере. поэтому мне нужно сохранить значения отображения в базе данных cakephp при отображении, изменении и т. д., и только на одной странице значение базы данных magento необходимо распечатать и обновить.

Я сохранил 2 переменные в databse.php

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'root',
    'password' => '',
    'database' => 'myappdatabase',
    'prefix' => '',
    //'encoding' => 'utf8',
);
    var $vsdatabase = array(    
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => '192.168.1.36',   
    'login' => 'root',          
    'password' => '',           
    'database' => 'magento',    
    'prefix' => '',
    );

и в контроллере,

     App::import('Model','ConnectionManager');
$db = ConnectionManager::getDataSource('vsdatabase');
$database = $db->config['database'];
$data = $this->User->query("select * from $database.admin_user as t1");

хост, который я хотел бы сохранить, как написано выше, означает, что по умолчанию используется моя локальная база данных, а другая - база данных magento на удаленном ПК. Если у меня оба хоста одинаковые, то он работает, но если пишет по-другому, он не работает

Так я решаю эту проблему? Пожалуйста, помогите мне найти решение

1 Ответ

3 голосов
/ 14 марта 2012

То, что вы делаете, совершенно неверно, и даже если вы будете использовать этот код, он должен принадлежать модели, а не контроллеру.

Просто создайте новую модель, названную в честь таблицы magento, но я бы поставил перед ней префикс magento или что-то в этом роде. Модель должна быть настроена для использования этого соединения с БД.

class MagentoUser extends AppModel {
    public $useDbConfig = 'vsdatabase';
}

Вы также можете запускать модели с другими псевдонимами и источниками данных на лету, используя ClassRegistry. Смотри http://api20.cakephp.org/class/class-registry#method-ClassRegistryinit

Если вы не будете использовать простые SQL-запросы, вы, скорее всего, в конечном итоге будете писать небезопасные запросы и потеряете другие функции CakePHP ORM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...