Dans le cadre de mon application Laravel 5.2, j'aimerais définir une commande personnalisée pour artisan, mais ma commande n'apparaît pas dans artisan list
.
1). J'ai créé le squelette de commande : artisan make:console --command=process:emails
2). J'ai ajouté un peu de code de test à la méthode handle()
de la nouvelle classe :
<?php
namespace App\Console\Commands;
use App\CommunicationsQueue;
use Illuminate\Console\Command;
class ProcessEmailQueueCommand extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'process:email';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Send all currently pending emails in the queue';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
CommunicationsQueue::where('status', 'PENDING')->update(['status'=>'TEST']);
$this->info('The mails queue was successfully processed.');
}
}
3). Ensuite, j'ai enregistré la commande dans app/Console/Kernel.php
:
protected $commands = [
'App\Console\Commands\ProcessEmailQueueCommand',
];
Qu'est-ce que j'oublie ici? Je suis sûr que c'est quelque chose d'incroyablement simple, mais je ne le vois pas.
2 réponses
Dans app/Console/Kernel.php
essayez avec le code suivant
protected $commands = [
'App\Console\Commands\ProcessEmailQueueCommand',
];
Sur Kernel.php, essayez d'inclure le nom complet, qui devrait être :
protected $commands = [
\App\Console\Commands\ProcessEmailQueueCommand::class,
];
Questions connexes
De nouvelles questions
php
PHP est un langage de script largement utilisé, de haut niveau, dynamique, orienté objet et interprété, principalement conçu pour le développement Web côté serveur. Utilisé pour les questions sur le langage PHP.