2013-09-23 10 views
5

Ich verstehe wahrscheinlich nicht genau, wie das funktioniert, aber was ist der beste Weg, dies zu erreichen? Ich habe etwas im Sinn, aber es scheint ziemlich hacky.Laravel DB Seeds - Testdaten v Beispieldaten

Ich habe eine Reihe von Beispieldaten, die ich verwenden, um meine Anwendung zu testen. Dies wird über die eingebaute Sämaschine in Laravel ausgesät. Dies enthält Dinge wie Beispiel Benutzer, Adressen, Dokumente usw.

Ich habe auch eine Reihe von Standarddaten, die in Produktion gehen sollte. Ich füge dies derzeit direkt in die Migration ein. wenn ich wurde zum Beispiel eine Tabelle für account_roles Zugabe, könnte ich folgende an der Unterseite der Migration

$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); 

diese Weise auf die Produktion umfassen, ich wandern nur die Datenbank keine Produktion bereit Datenbank Werte einfügen, und Beim Staging/Entwicklung kann ich die Migrationen aktualisieren und dann die Datenbank mit Beispieldaten versehen.

Gibt es einen anderen (besseren) Weg, dies zu tun?

Antwort

8

Sie könnten eine Überprüfung der aktuellen Umgebung in Ihrer Seeder-Datei ausführen, und Samen als

benötigt
<?php 

class DatabaseSeeder extends Seeder { 

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

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

} 
+0

Dies funktioniert, aber ist die richtige Syntax zu verdeutlichen dies: Umwelt 'if (App ::() === "Produktion") {...} ' – racl101