2013-09-23 92 views
5

Tôi có thể hiểu sai chính xác cách thức hoạt động này, nhưng cách tốt nhất để thực hiện điều này là gì? Tôi có một cái gì đó trong tâm trí nhưng nó có vẻ khá hacky.Hạt giống Laravel DB - Dữ liệu thử nghiệm v Dữ liệu mẫu

Tôi có một bộ dữ liệu mẫu mà tôi sử dụng để kiểm tra đơn đăng ký của mình. Đây là hạt giống thông qua việc xây dựng trong seeder trong Laravel. Điều này chứa các thông tin như ví dụ về người dùng, địa chỉ, tài liệu, v.v.

Tôi cũng có một bộ dữ liệu mặc định sẽ đi vào sản xuất. Tôi hiện đang thêm trực tiếp điều này trong quá trình di chuyển. Ví dụ, nếu tôi đã thêm một bảng cho account_roles, tôi có thể bao gồm những điều sau ở dưới cùng của sự di cư

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

Bằng cách này, về sản xuất, tôi chỉ di chuyển cơ sở dữ liệu để chèn thêm bất kỳ sản xuất giá trị cơ sở dữ liệu đã sẵn sàng, và về dàn dựng/phát triển, tôi có thể làm mới các di chuyển và sau đó nhân cơ sở dữ liệu với dữ liệu mẫu.

Có cách nào khác (tốt hơn) để thực hiện việc này không?

Trả lời

8

Bạn có thể chạy một kiểm tra về môi trường hiện tại trong tập tin seeder của bạn, và hạt giống khi cần thiết

<?php 

class DatabaseSeeder extends Seeder { 

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

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

} 
+0

này hoạt động, nhưng, để làm rõ cú pháp chính xác là thế này: 'nếu (App :: môi trường() === 'sản xuất') {...} ' – racl101