Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak dynamicznie korzystać z wielu baz danych dla jednego modelu w CakePHP?

Ten dżentelmen (Olivier ) miał ten sam problem! (Rok temu) Napisał mała adaptacja dla Controller s! Jest dość mały i okazuje się, że działa w 1.3 i 2.x .

Tak czy inaczej, to jest moje ostateczne rozwiązanie, które umieściłem w 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;
    }
}

A oto jak użyłem go w mojej 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);
  }

}

Obstawiam, nie jestem pierwszy ani ostatni z tym problemem. Więc naprawdę mam nadzieję, że te informacje znajdą ludzi i społeczność 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. 3 sposoby na znalezienie wierszy zawierających małe litery w MySQL

  2. PDO fetchAll grupuj pary klucz-wartość do tablicy asocjacyjnej

  3. Jakiego typu danych MySQL należy użyć dla szerokości/długości geograficznej z 8 miejscami po przecinku?

  4. Jak naprawić typowe problemy z bazą danych MySQL?

  5. Sortuj według kolejności wartości w instrukcji select w klauzuli w mysql