2013-09-23 17 views
5

Probabilmente fraintendiamo esattamente come funziona, ma qual è il modo migliore per farlo? Ho qualcosa in mente ma sembra abbastanza hacky.Laravel DB Seeds - Dati di prova v Dati campione

Ho un set di dati di esempio che utilizzo per testare la mia applicazione. Questo è seminato tramite la seminatrice integrata a Laravel. Questo contiene cose come esempi di utenti, indirizzi, documenti, ecc.

Ho anche una serie di dati di default che dovrebbero andare in produzione. Attualmente lo aggiungo direttamente nella migrazione. Ad esempio, se stavo aggiungendo un tavolo per account_roles, potrei comprendere i seguenti nella parte inferiore della migrazione

$account_admin = array('role' => 'Account Administrator', 'flag' => 'ACCOUNT_ADMIN'); 
$account_owner = array('role' => 'Account Administrator', 'flag' => 'ACCOUNT_OWNER'); 
DB::table('account_roles')->insert($account_admin); 
DB::table('account_roles')->insert($account_owner); 

In questo modo, sulla produzione, ho appena migrare il database per inserire eventuali valori di database ready produzione, e su staging/sviluppo, posso aggiornare le migrazioni e quindi seminare il database con dati di esempio.

C'è qualche altro (migliore) modo per farlo?

risposta

8

Si potrebbe eseguire un controllo sul contesto attuale nel file seminatrice, e di semi, se necessario

<?php 

class DatabaseSeeder extends Seeder { 

    public function run() 
    { 
      Eloquent::unguard(); 

      if (App::environment() === 'production') 
      { 
       $this->call('ProductionSeeder'); 
      } 
      else 
      { 
       $this->call('StagingSeeder'); 
      } 
    } 

} 
+0

Questo funziona, ma, per chiarire la sintassi corretta è questa: ambiente 'se (App ::() === 'produzione') {...} ' – racl101