Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвате динамично множество бази данни за един модел в CakePHP

Този джентълмен (Оливие ) имах същия проблем! (Преди година) Той написа малка адаптация за Controller с! Доста е малък и се оказва, че работи в1.3 и 2.x .

Както и да е, това е моето окончателно решение, което поставих в 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;
    }
}

И ето как го използвах в моето app/Controller/CarsController.php :

class CarsController extends AppController
{
  public function index()
  {
    $this->Car->setDatabase('cake_sandbox_client3');

    $cars = $this->Car->find('all');

    $this->set('cars', $cars);
  }

}

Обзалагам се, че не съм първият или последният с този проблем. Така че наистина се надявам тази информация да намери хора и CakePHP общността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Great Circle Distance (формула на Haversine)

  2. 2 начина за връщане на редове, които съдържат буквено-цифрови знаци в MySQL

  3. Производителност на пакетно вмъкване на JDBC

  4. Как да вмъкнете няколко реда в MySQL

  5. Как да избягате от единични кавички в MySQL