首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从Laravel中的命令调用Controller方法

从Laravel中的命令调用Controller方法
EN

Stack Overflow用户
提问于 2019-01-04 03:40:09
回答 1查看 7K关注 0票数 3

我有一个通过Redis Pub/Sub监听的命令。当接收到发布时,我想调用一个控制器方法,以便可以更新数据库。

然而,我还没有找到任何关于如何从项目内部但在路由外部调用带参数的控制器方法的解决方案。我见过的最接近的东西是这样的:

代码语言:javascript
复制
    return redirect()->action(
        'TransactionController@assignUser', [
               'transId' => $trans_id,
               'userId' => $user_id
        ]);

我尝试过的完整命令如下所示:

代码语言:javascript
复制
<?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() (即使它存在并且需要两个参数)。我也不确定“重定向”是否真的是我想要的。

有没有其他方法可以在命令中调用控制器函数,或者有其他方法可以做到这一点?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54028760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档