CakePHP: creazione di un modello on the fly

ATTENZIONE! Il post ha più di 2 anni e le informazioni contenute potrebbero essere obsolete (ad esempio a causa di un aggiornamento di versione rispetto agli elementi descritti o links modificati da siti esterni).

Durante lo sviluppo di un'applicazione con CakePHP può essere necessaria la creazione di un modello "al volo" non definito a priori come classe. Ecco come fare con poche righe di codice:


$nome_modello = 'onTheFlyModel';
$this->{$nome_modello} = new Model(array(
 'name' => $nome_modello,
 //nome della tabella da utilizzare
 'table' => 'nome_tabella',
 //nome dello schema definito in config/database.php
 'ds' => 'default'
));

Ora è possibile utilizzare direttamente il modello appena creato allo stesso modo degli altri:


$res = $this->{$nome_modello}->find('all');

o creare una relazione con un altro Model:


$this->altroModel->bindModel(array(
 'hasOne' => array(
  $nome_modello => array(
   'className' => $nome_modello,
   'foreignKey' => 'foreign_key',
   'conditions' => array(
    $nome_modello.'.active' => 1
   ),
   'dependent' => false
  )
 )
));

Commenti