Rya*_*ith 27 php migration console laravel laravel-4
我很好奇,我正在使用Laravel和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();
}
}
Run Code Online (Sandbox Code Playgroud)
Jac*_*int 50
不知道你是使用Laravel 3还是Laravel 4,如果它也可以在Laravel 3中使用,但我在文档中找到了这个.
$this->info('Creating sample users...');
Run Code Online (Sandbox Code Playgroud)
编辑
如果切换到数据库种子,可以使用它来显示消息
$this->command->info('Creating sample users...');
Run Code Online (Sandbox Code Playgroud)
小智 31
这适合我
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');
}
}
}
Run Code Online (Sandbox Code Playgroud)
我有一个迁移,它将一个大表转换为一个更有效的格式,并使用它来在它工作时取得一些进展.
既然选择的答案从4.2开始似乎没有用,我说只是保持简单:
public function up() {
// Migration runs //
echo 'Records processed' . PHP_EOL;
}
Run Code Online (Sandbox Code Playgroud)
对于Laravel5中的数据库种子,可以使用
$this->command->getOutput()->writeln("<info>Your message here</info>");
Run Code Online (Sandbox Code Playgroud)
在命令行上打印输出。
<info>
以绿色显示消息,而<error>
以红色显示,可用于错误消息。
我喜欢 Dumper 添加的颜色(在 Laravel 5.3 上测试)。我认为看起来比使用回声好一点。我对回声的问题是它太容易被错过了,它添加了一点绿色,吸引了眼球:
public function up() {
// Migration runs //
(new Illuminate\Support\Debug\Dumper)->dump("A bit more colorful text");
}
Run Code Online (Sandbox Code Playgroud)
谈论 Laravel 5(您可以使用 查看您拥有的版本php artisan --version
),Migration 基类没有打印方法。
一个简单的echo
即可完成工作,但是,如果您愿意,您可以扩展它并添加此功能:
abstract class MyMigration extends Migration
{
// colors for console echo
protected const COLOR_RED = 'COLOR_RED';
protected const COLOR_GREEN = 'COLOR_GREEN';
protected const COLOR_YELLOW = 'COLOR_YELLOW';
protected function logMessage($str, String $color = null)
{
switch ($color) {
case self::COLOR_RED:
$str = "\033[01;31m$str\033[0m";
break;
case self::COLOR_GREEN:
$str = "\033[01;32m$str\033[0m";
break;
case self::COLOR_YELLOW:
$str = "\033[01;33m$str\033[0m";
break;
echo $str . PHP_EOL;
}
}
}
Run Code Online (Sandbox Code Playgroud)
然后简单地用您的消息调用它:
$this->logMessage("Your message", self::COLOR_RED );
Run Code Online (Sandbox Code Playgroud)