Как эхо на консоли в Laravel и Artisan?
Мне было любопытно, я использую 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();
}
}
Ответы
Ответ 1
Не знаю, используете ли вы Laravel 3 или Laravel 4, и если это возможно и в Laravel 3, но я нашел это в документах.
$this->info('Creating sample users...');
ИЗМЕНИТЬ
Если вы переключитесь на семена базы данных, вы можете использовать это для отображения сообщения
$this->command->info('Creating sample users...');
Ответ 2
Это работает для меня
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');
}
}
}
У меня есть миграция, которая преобразует большую таблицу в более эффективный формат и использует ее для достижения определенного прогресса, пока она работает.
Ответ 3
Так как выбранный ответ, похоже, не работает с 4.2, я просто говорю просто:
public function up() {
// Migration runs //
echo 'Records processed' . PHP_EOL;
}
Ответ 4
Мне нравится цвет, добавленный Dumper (проверен на Laravel 5.3). Я думаю, выглядит немного лучше, чем использование эха. Проблема, с которой я сталкиваюсь, заключается в том, что ее слишком легко упускать, а самонакладчик добавляет немного зеленого цвета, который бросается в глаза:
public function up() {
// Migration runs //
(new Illuminate\Support\Debug\Dumper)->dump("A bit more colorful text");
}
Ответ 5
'Symfony\Component\Console\Output\ConsoleOutput;' работает для меня на Laravel 5.2
Ответ 6
Для посева базы данных в Laravel5 вы можете использовать
$this->command->getOutput()->writeln("<info>Your message here</info>");
чтобы распечатать вывод в командной строке.
<info>
показывает сообщение в зеленом цвете, где <error>
отображается красным цветом, который может использоваться для сообщений об ошибках.
Ответ 7
Говоря о 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;
}
}
}
а затем просто позвоните со своим сообщением:
$this->logMessage("Your message", self::COLOR_RED );