web-dev-qa-db-ja.com

Laravel | Notifyで変数を渡す

Notifyにメールを送りたいのですが、動作しますが、変数を入れようとすると、未定義であることが返されます。変数をNotifyに渡す方法がわかりません。->withResult($result)を実行しようとしましたが、うまくいきませんでした。コントローラは次のとおりです。

    $result = Review::where('user_hash', '=', $data['lname_c'])->where('email', $data['email_c'])->orderBy('created_at', 'desc')->first();
    $result->notify(new SendReview());

そして私のSendReview.php通知:

public function toMail($notifiable)
{

    return $result['invitation_id']; // test to check if variable is passed
    return (new MailMessage)
                ->line('Test.')
                ->action('Nani', url($url))
                ->line('Thank you');
}

レビューテーブルにuser_hashとinvitation_idがあります。これらをnotifyに渡します。私がする時 return $result['invitation_id']; できます。理解できるといいのですが、重複する質問を確認しましたが見つかりませんでした。

7
Laynom Graphic

これは彼らがドキュメントでそれを行う方法です。

$arr = [ 'foo' => "bar" ];
$result->notify(new SendReview($arr));

そしてあなたのSendReview.php

...

protected $arr;

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

public function toMail($notifiable) {
        // Access your array in here
        dd($this->arr);
}
9
Paul Santos

Notificationクラスでは_$notifiable_変数を使用する必要があります。

これは、通知が送信されるクラスのインスタンスです。したがって、ここでは、レビューオブジェクトが_$notifiable_変数として渡されます。

logger($notifiable)メソッドでtoMail()としてログに記録し、そのプロパティを確認することができます。

1
Amit Gupta