需求#
此文章是 Laravel 4 Artisan 命令行实战 的更新。
有一个需求, 需要把已有的老数据做整理, 为每篇 Topic 生成一个摘要信息, 并放到数据库里面, 方便以后的读取.
官方文档见这里:Articsan 命令行文档
创建命令#
1. 命令行生成文件#
以下命令生成文件
app/Console/Commands/TopicMakeExcerptCommand.php
$ php artisan make:console TopicMakeExcerptCommand --command=topics:excerpt
Command created successfully.
2. 激活 Artisan 命令行#
在
app/Console/Kernel.php
文件里面, 添加以下 protected $commands = [
\App\Console\Commands\TopicMakeExcerptCommand::class,
];
下图:
3. 加入业务逻辑代码#
第一步生成的
TopicMakeExcerptCommand.php
文件, 修改以下区域
namespace App\Console\Commands;
use Illuminate\Console\Command;
class TopicMakeExcerptCommand extends Command
{
/**
* 1. 这里是命令行调用的名字, 如这里的: `topics:excerpt`,
* 命令行调用的时候就是 `php artisan topics:excerpt`
*
* @var string
*/
protected $signature = 'topics: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 handle()
{
$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 topics:excerpt
搞定
from : https://laravel-china.org/topics/1759
沒有留言:
張貼留言