I want to send a mail to Notify, it works but when I try to put the variables, It returns that they are undefined. I don't understand how to pass a variable to Notify, I tried to do ->withResult($result)
but it didn't work out.
Here is the controller:
$result = Review::where('user_hash', '=', $data['lname_c'])->where('email', $data['email_c'])->orderBy('created_at', 'desc')->first();
$result->notify(new SendReview());
And my SendReview.php notifications:
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');
}
There is user_hash and invitation_id in my Review table, I want to pass them to the notify. When I do return $result['invitation_id'];
it works. Hope I am understandable, I checked for duplicate questions and couldn't find one.
Laravel Notify is a package that lets you add custom notifications to your project. A diverse range of notification design is available.
For all unread notification you should count like below instead of auth()->user()->unreadNotifications->count() . Your method will load all the notifications and then count will be performed in php when you can simply get the count with single query.
This is how they do it in docs.
$arr = [ 'foo' => "bar" ];
$result->notify(new SendReview($arr));
And in your SendReview.php
...
protected $arr;
public function __construct(array $arr) {
$this->arr = $arr;
}
public function toMail($notifiable) {
// Access your array in here
dd($this->arr);
}
You must use $notifiable
variable in your Notification
class.
It is an instance of the class to which the notification is being sent. So here your review object is passed as $notifiable
variable.
You can try to log it as logger($notifiable)
in toMail()
method and check its properties.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With