2013-05-24 51 views
17

Tôi tò mò, tôi đang sử dụng Laravel và Artisan để di chuyển. Có một phương pháp để xuất thông tin cho giao diện điều khiển? Tôi dường như không tìm thấy bất kỳ thông tin nào về điều này. Ví dụ:Làm thế nào để echo để giao diện điều khiển trong Laravel và Artisan?

<?php 

class Generate_Sample_Users{ 

    public function up(){ 

     //Echo to console here 
     echo "Creating sample users..."; 

     $generator = new Sample_Data(); 
     $user_count = 30; 
     $users = array(); 


     for($i=0; $i < $user_count; $i++){ 
      array_push($users, $generator->generate_user($i)); 
     } 

     DB::table('users')->insert($users); 
    } 

    public function down(){ 
     DB::table('users')->delete(); 
    } 

} 
+1

Chỉ cần một gợi ý, di chuyển là để tạo lược đồ trong đó hạt giống là để tạo cơ sở dữ liệu của bạn. Những gì bạn đang làm ở trên trông giống như một hạt giống cho tôi. –

+0

Cảm ơn sự chỉnh sửa Karl, tôi tạo lược đồ bằng cách sử dụng di chuyển khác, sau đó tôi chạy di chuyển này để điền dữ liệu mẫu cho môi trường phát triển của tôi. Đây có phải là cách làm không chính xác không? –

+1

Nếu bạn đang sử dụng Laravel 4, nó tốt hơn để làm điều này với hạt giống: http://four.laravel.com/docs/migrations#database-seeding – JackPoint

Trả lời

24

Không biết nếu bạn đang sử dụng Laravel 3 hoặc Laravel 4, và nếu cũng có thể của nó trong Laravel 3, nhưng tôi thấy điều này trong the docs.

$this->info('Creating sample users...'); 

EDIT

Nếu bạn chuyển sang database seeds bạn có thể sử dụng để hiển thị một thông

$this->command->info('Creating sample users...'); 
+0

Đó là Laravel 4, tôi nhận được cuộc gọi đến lỗi phương thức không xác định. Tôi có nên mở rộng một lớp học trong quá trình di chuyển của mình không? –

+0

@RyanSmith đã chỉnh sửa câu trả lời của tôi;) – JackPoint

+1

Cảm ơn;) Chỉ vì tò mò, có cách nào để làm điều này trong Laravel 3 không? –

20

này làm việc cho tôi

use Symfony\Component\Console\Output\ConsoleOutput; 

class MigrateData { 

    public function up() 
    { 
     $output = new ConsoleOutput(); 

     for($i=0; $i<50000; $i++) 
     { 
      $output->writeln('Converting '.$i.' of 50000'); 
     } 
    } 
} 

Tôi có một di chuyển mà đang chuyển đổi một bảng lớn thành một định dạng hiệu quả hơn và sử dụng nó để có được một số tiến bộ trong khi nó hoạt động.

+2

Điều này phù hợp với tôi trên Laravel 4.2; câu trả lời được chấp nhận không –

2

'Symfony \ Component \ Console \ Output \ ConsoleOutput;' làm việc cho tôi trên Laravel 5.2

4

Kể từ khi câu trả lời lựa chọn dường như không làm việc kể từ 4.2, tôi nói chỉ cần giữ cho nó đơn giản:

public function up() { 
    // Migration runs // 
    echo 'Records processed' . PHP_EOL; 
} 
+0

vâng!Chỉ cần giữ nó đơn giản! làm việc với bất kỳ phiên bản Laravel nào: D – Davuz

1

Tôi thích màu bổ sung bởi các Dumper (thử nghiệm trên Laravel 5.3). Tôi nghĩ trông đẹp hơn một chút so với sử dụng tiếng vang. Vấn đề tôi có với tiếng vang ra là nó quá dễ dàng thể bỏ qua, các Dumper nó bổ sung thêm một chút màu xanh lá cây mà bắt mắt người:

public function up() { 
    // Migration runs // 
    (new Illuminate\Support\Debug\Dumper)->dump("A bit more colorful text"); 
} 
+0

Đây không thực sự là câu trả lời cho câu hỏi, bây giờ là nó? –

+0

Tại sao đây không phải là câu trả lời cho câu hỏi? Nó xuất ra văn bản mà bạn muốn trên bàn điều khiển trong quá trình di chuyển. Sự khác biệt duy nhất cho câu trả lời ở trên là nó có màu khác (màu xanh lục). – gsaqui

0

Đối với seeding cơ sở dữ liệu trong Laravel5, bạn có thể sử dụng

$this->command->getOutput()->writeln("<info>Your message here</info>"); 

để in đầu ra trên dòng lệnh.

<info> hiển thị thông báo có màu xanh lá cây ở đó là <error> hiển thị bằng màu đỏ có thể được sử dụng cho thông báo lỗi.

Các vấn đề liên quan