Вызов метода контроллера из команды в Laravel

У меня есть команда, которая прослушивает через 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 () не может быть найден (даже если он существует и ожидает два параметра). Я также не уверен, что «перенаправление» действительно то, что я здесь.

Есть ли какой-либо другой способ вызова функции контроллера в команде или каким-либо другим способом, который сделал бы это возможным?

0

Решение

Если у вашего контроллера нет обязательных параметров, вы можете просто создать контроллер как новый объект и вызвать функцию.

$controller = new TransactionController();
$controller->assignUser([
'transId' => $trans_id,
'userId' => $user_id
]);
2

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

Других решений пока нет …

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