У меня есть команда, которая прослушивает через Redis Pub / Sub.Когда публикация получена, я хочу вызвать метод контроллера, чтобы я мог обновить базу данных.
Однако мне не удалось найти какое-либо решение о том, как вызвать метод контроллера с параметрами изнутри проекта, но за пределами маршрутов.Самое близкое, что я видел, это что-то вроде:
return redirect()->action(
'TransactionController@assignUser', [
'transId' => $trans_id,
'userId' => $user_id
]);
Моя полная команда, которую я попробовал, выглядит следующим образом:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class RedisSubscribe extends Command
{
protected $signature = 'redis:subscribe';
protected $description = 'Subscribe to a Redis channel';
public function handle()
{
Redis::subscribe('accepted-requests', function ($request) {
$trans_array = json_decode($request);
$trans_id = $trans_array->trans_id;
$user_id = $trans_array->user_id;
$this->assignUser($trans_id, $user_id);
});
}
public function assignUser($trans_id, $user_id)
{
return redirect()->action(
'TransactionController@assignUser', [
'transId' => $trans_id,
'userId' => $user_id
]);
}
}
Однако, похоже, это не работает.Когда я запускаю эту команду, я получаю сообщение об ошибке, что assignUser () не может быть найден (даже если он существует и ожидает два параметра).Я также не уверен, что «перенаправление» действительно то, что мне нужно здесь.
Есть ли какой-либо другой способ вызова функции контроллера в команде или каким-либо другим способом, который сделал бы это возможным?