2017-03-17 65 views
-1

我使用laravel 5.4并使用nWidart/laravel-modules来实现模块概念。Laravel-作业 - 结果返回给模块内的控制器0

- >创建一个控制器,经由控制器I称为laravel 一个作业使用作业概念我写后法中,首先我捕获在控制器然后发送的请求阵列工作为内侧的插入表 过程工作正常,如果我在作业打印结果对象被成功地打印 但是当我返回到控制器其表示为“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; 
    } 

,当我在控制打印$用户,我得到的输出

回答

0

“0” 这方面的一个重要组成部分将回落事实上,劳拉维尔的乔布斯有可能是异步的,并且通常以这种方式使用。如果你打算在作业中使用ShouldQueue,那么根本无法将一个值返回给你的控制器(至少不是没有一个非常冒险的解决方案)。如果您正在触发作业并立即返回(即同步),请删除ShouldQueue实施。从那里,这将是简单的从作业返回数据,看看建议在这个答案的一个可能的方法:

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

+0

谢谢Sheraz,这样的工作是ASYN功能,所以是有可能的方法,使这种同步,这样的ID我可以得到回报,并移动到控制器中的下一行,并使用用户对象;在你告诉我尝试的链接,但仍然得到0作为函数响应 – krishna

-1

当我使用PHP工匠模块创建通过命令行工作:让在职用户

创建的文件

class CheckJob implements ShouldQueue 
{ 

} 

由于这是实施 ShouldQueue功能是充当异步但是当我去除实施ShouldQueue它作为同步和返回预期

+0

是的响应,如果我没有弄错,你可以在创建工作时将-sync选项传递给php工匠,以避免必须进行此更改之后手动。很高兴你设法解决这个问题。 – Sheraz