Команда получения ошибки не существует в планировании задач Laravel

Я следую этому уроку: https://www.sitepoint.com/managing-cronjobs-with-laravel/

но когда я набираю в командной строке php artisan make:list я получаю сообщение об ошибке

  [ReflectionException]
Class App\Console\Command\Test123 does not exist

Как исправить вышеуказанную проблему? Что я делаю неправильно?

<?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use Carbon\Carbon;

use Response;
use Config;
use DB;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;

class Test123 extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'abcd';

/**
* The console command description.
*
* @var string
*/
protected $description = 'some description';

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

/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$parameters = [
'attribute1' => 'val1',
'attribute2' => 'val2',
'_token' => Config::get('app.secret')
];
$formattedParameters = http_build_query($parameters);
$statusCode = 200;
$url = "url?{$formattedParameters}";

$client = new Client();
$res = $client->get($url);

$jsonArray = json_decode($res->getBody(),true);
$field1= $jsonArray['field1'];

DB::table('table_name')->insert(
['field1' => $field1]
);
}
}
<?php

namespace App\Console;

use Illuminate\Console\Scheduling\Schedule;
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
use Carbon\Carbon;

use Response;
use Config;
use DB;
use GuzzleHttp\Exception\GuzzleException;
use GuzzleHttp\Client;class Kernel extends ConsoleKernel
{
/**
* The Artisan commands provided by your application.
*
* @var array
*/
protected $commands = [
\App\Console\Command\Test123::class,
];

/**
* Define the application's command schedule.
*
* @param  \Illuminate\Console\Scheduling\Schedule  $schedule
* @return void
*/
protected function schedule(Schedule $schedule)
{

$schedule->command('abcd')->everyMinute();}

/**
* Register the Closure based commands for the application.
*
* @return void
*/
protected function commands()
{
require base_path('routes/console.php');
}
}

-1

Решение

У вас есть две проблемы.

Во-первых, в вашем Kernel.php файл, у вас есть это:

protected $commands = [
App\Console\Command\Test123::class,
];

Так как вы не начали имя класса с обратной косой черты (\), он будет искать указанный класс относительно текущего пространства имен, которое для Kernel.php является App\Console, Вот почему ваша ошибка утверждает, что не может найти класс App\Console\App\Console\Command\Test123,

Итак, если вы измените это на:

protected $commands = [
\App\Console\Command\Test123::class,
];

Теперь он попытается найти \App\Console\Command\Test123 из корневого пространства имен.

Это приводит ко второму вопросу. В вашем Test123 класс, у вас есть пространство имен, указанное App\Console\Commandsне App\Console\Command (у вас есть дополнительный s).

Если ваш файл находится в app\Console\Commands каталог, то ваше пространство имен является правильным, и вам нужно исправить Kernel.php файл для поиска правильного класса. Если ваш файл находится в app\Console\Command каталог, то ваше пространство имен неверно, и вам нужно исправить объявление пространства имен в вашем Test123 учебный класс.

1

Другие решения

я собираюсь

Класс App \ Console \ App \ Console \ Command \ Test123 не существует

Как исправить вышеуказанную проблему?

В 99,9% это потому что ты забыл сделать

composer dumpautoload

как только вы создали Test123 учебный класс. Сделай это сейчас и должно быть хорошо.

РЕДАКТИРОВАТЬ

Сообщение об ошибке, которое вы видите, показывает полное пространство имен вашему классу, которое пахнет для меня, так как я почти уверен, что так и должно быть App\Console\Command\Test123 вместо. Если это так, отредактируйте $commands массив, чтобы он выглядел так:

protected $commands = [
\App\Console\Command\Test123::class,
];
0

По вопросам рекламы [email protected]