Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Cara menggunakan beberapa database secara dinamis untuk satu model di CakePHP

Pria ini (Olivier ) memiliki masalah yang sama! (Setahun yang lalu) Dia menulis adaptasi kecil untuk Controller s! Ini cukup kecil dan ternyata berfungsi di 1.3 dan 2.x .

Bagaimanapun, ini adalah solusi terakhir saya, yang saya masukkan ke dalam 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;
    }
}

Dan inilah cara saya menggunakannya di app/Controller/CarsController.php saya :

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

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

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

}

Saya bertaruh, saya bukan yang pertama atau terakhir dengan masalah ini. Jadi saya sangat berharap informasi ini akan menemukan orang-orang &komunitas 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 seperti peningkatan kinerja

  2. Apa perbedaan antara SQL dan MySQL?

  3. GANDA vs DECIMAL di MySQL

  4. Cara termudah untuk Menambahkan Beberapa Spasi ke String di MySQL – SPACE()

  5. Berapa ukuran kolom int(11) di mysql dalam byte?