Laravel 4 Artisan命令行実戦

1876 ワード

1.コマンドライン生成ファイル
次のコマンドは、app/commandsフォルダにTopicMakeExcerptCommand.phpファイルを生成します.
$ php artisan command:make TopicMakeExcerptCommand
Command created successfully.

2.Artisanコマンドラインのアクティブ化app/start/artisan.phpファイルに、以下を追加します.
Artisan::add(new TopicMakeExcerptCommand);

3.ビジネスロジックコードの追加
最初のステップで生成されたTopicMakeExcerptCommand.phpファイルは、次の領域を変更します.
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class TopicMakeExcerptCommand extends Command {

  /**
   * 1.            ,     : `topic:excerpt`, 
   *            `php artisan topic:excerpt`
   *
   * @var string
   */
  protected $name = 'topic:excerpt';

  /**
   * 2.           ,     `php artisan`  
   *        .
   *
   * @var string
   */
  protected $description = '           ';

  /**
   * Create a new command instance.
   *
   * @return void
   */
  public function __construct()
  {
    parent::__construct();
  }

  /**
   * 3.           ,          ,
   *       ,    .
   *
   * @return mixed
   */
  public function fire()
  {
        $topics = Topic::all();
        $transfer_count = 0;

        foreach ($topics as $topic) {
          if (empty($topic->excerpt))
          {
              $topic->excerpt = Topic::makeExcerpt($topic->body);
              $topic->save();
              $transfer_count++;
          }
        }
        $this->info("Transfer old data count: " . $transfer_count);
        $this->info("It's Done, have a good day.");
  }}?>

4.コマンドライン呼び出し
まず、登録に成功したかどうかを確認し、直接実行します.
php artisan

コマンドの実行を開始
実行結果は次の図のようになります.
$ php artisan topic:excerpt