2017-03-17 51 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

相關問題