ホーム>source

〜データベース〜を使用してリスナーをキューに入れようとしていますが、〜sync〜で正常に動作しますが、データベースを使用してイベントを通じて変数を送信するとエラーが発生し、何が起こっているのかわかりません。エラーは次のとおりです。

[2018-08-20 11:33:23] local.ERROR: Undefined property: 
laravel\Events\sendSMS::$request {"exception":"[object] (ErrorException(code: 
0): Undefined property: laravel\\Events\\sendSMS::$request at 
/var/www/laravel/app/Listeners/sendSMSListener.php:30)
[stacktrace]

イベントを送信する代わりに、リスナー内で変数を定義すれば問題なく動作します。

リスナーコードは次のとおりです。

public function handle(sendSMS $event)
{
    $request = $event->request;
    $recipient = $request->number;
    $message = $request->message;
    return $message; -> doesn`t matter
}

そしてイベントコード:

public function __construct($request)
{
    $this->request = $request;
}

あなたの答え
  • 解決した方法 # 1

    public function handle(sendSMS $event)
    {
        $request = $event->request;
        $recipient = $this->request->number;
        $message = $this->request->message;
        return $message;
    }
    
    

  • 解決した方法 # 2

    $requestのクラスのデータメンバーを定義します。

    protected $request;
    
    

  • 解決した方法 # 3

    以下のコードを試すことができます。

    class TempClass implements ShouldQueue {
        protected $common;
        //this is main variable as you send in your code.
        public function __construct($common)
        {
            $this->common = $common;
            //this protected variable handle here
        }
        public function handle()
        {
            //use protected variable like this type
            $request = $this->common->request;
            $recipient = $this->common->number;
            $message = $this->common->message;
            return $message;
        }
    }
    
    

関連記事

  • 前へ java - JPAクエリ:サブクエリをグループ化条件に結合する
  • 次へ Google Apps Script - Google Appsスクリプト:setvaluesがシートで機能しない