Laravel- Jobs-结果为模块内的控制器返回0

时间:2017-03-17 09:31:39

标签: php jobs laravel-5.4

我正在使用laravel 5.4并使用 nWidart / laravel-modules 来实现模块概念。

- >创建一个控制器,通过该控制器,我在laravel中使用作业概念调用作业 我写了一个post方法,首先我在控制器中捕获它然后将请求数组发送到作业插入表内 该过程工作正常,如果我在作业中打印结果对象正在成功打印 但当我把它返回到控制器时,它显示为“0”

- >然后我尝试返回正常的字符串仍然显示0作为控制器中的响应

我的控制器

public function store(Request $request)
    {
        $user = dispatch(new CheckJob($request));
        return $user;
    }

我的工作

public function __construct($requestParams)
    {

        $this->id = isset($requestParams['id']) ? $requestParams['id'] : null;
        $this->firstName = isset($requestParams['firstName']) ? $requestParams['firstName'] : null;
        $this->lastName = isset($requestParams['lastName']) ? $requestParams['lastName'] : null;
        $this->email = isset($requestParams['emailId']) ? $requestParams['emailId'] : null;
    }

    /**
     * Execute the job.
     *
     * @return void
     */
    public function handle()
    {
        //
        $user = User::firstOrNew(array('id' => $this->id));
        $user->first_name = $this->firstName;
        $user->last_name = $this->lastName;
        $user->email = $this->email;
        $user->save();
        return $user;
    }

当我在控制器中打印$ user时,输出“0”作为输出

2 个答案:

答案 0 :(得分:1)

当我使用php artisan module:make-job user

通过命令行创建作业时

创建的文件是

class CheckJob implements ShouldQueue
{

}

由于正在实施 ShouldQueue,该功能正在充当 async ,但当我删除时,实施了ShouldQueue以 同步 并按预期返回ID

答案 1 :(得分:0)

其中很大一部分归结为Laravel中的Jobs有可能异步,并且通常以这种方式使用。如果您打算在作业中使用ShouldQueue,则根本无法向控制器返回值(至少在没有非常苛刻的解决方案的情况下)。如果您正在触发作业并立即返回,即同步,请删除ShouldQueue实施。从那里开始,从工作中返回数据会更简单,看看这个答案中的一个可能方法的建议:

https://stackoverflow.com/a/37335658/7086017