我正在使用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”作为输出
答案 0 :(得分:1)
当我使用php artisan module:make-job user
通过命令行创建作业时创建的文件是
class CheckJob implements ShouldQueue
{
}
由于正在实施 ShouldQueue,该功能正在充当 async ,但当我删除时,实施了ShouldQueue以 同步 并按预期返回ID
答案 1 :(得分:0)
其中很大一部分归结为Laravel中的Jobs有可能异步,并且通常以这种方式使用。如果您打算在作业中使用ShouldQueue
,则根本无法向控制器返回值(至少在没有非常苛刻的解决方案的情况下)。如果您正在触发作业并立即返回,即同步,请删除ShouldQueue
实施。从那里开始,从工作中返回数据会更简单,看看这个答案中的一个可能方法的建议: