Метод notifyNow
Метод notifyNow применяется к экземпляру модели или коллекции моделей
и отправляет уведомление получателю немедленно, в синхронном режиме.
В отличие от метода notify, который помещает уведомление в очередь,
notifyNow выполняется сразу. Первым параметром передаётся экземпляр
класса уведомления, вторым необязательным параметром можно указать
каналы доставки.
Синтаксис
<?php
$model->notifyNow($notification, $channels);
?>
Пример
Давайте отправим уведомление пользователю о регистрации немедленно:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Notifications\WelcomeNotification;
class UserController extends Controller
{
public function register()
{
$user = User::create([
'name' => 'John Doe',
'email' => 'john@example.com',
]);
$user->notifyNow(new WelcomeNotification());
return response()->json(['message' => 'User registered']);
}
}
?>
Результат выполнения кода:
"User registered"
Пример
Давайте отправим уведомление нескольким пользователям с указанием конкретных каналов:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Notifications\SystemAlertNotification;
class NotificationController extends Controller
{
public function sendAlert()
{
$users = User::where('is_active', true)->get();
$users->notifyNow(new SystemAlertNotification(), ['mail', 'broadcast']);
return response()->json(['message' => 'Alerts sent']);
}
}
?>
Результат выполнения кода:
"Alerts sent"
Пример
Давайте используем метод в консольной команде для срочных уведомлений:
<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Models\User;
use App\Notifications\EmergencyNotification;
class SendEmergencyNotification extends Command
{
protected $signature = 'notify:emergency';
protected $description = 'Send emergency notifications';
public function handle()
{
$admin = User::where('role', 'admin')->first();
if ($admin) {
$admin->notifyNow(new EmergencyNotification('System failure'));
$this->info('Emergency notification sent');
} else {
$this->error('Admin not found');
}
}
}
?>
Результат выполнения кода:
"Emergency notification sent"
Смотрите также
-
метод
notify,
который отправляет уведомление через очередь -
метод
send,
который отправляет уведомление через фасад Notification -
метод
sendNow,
который немедленно отправляет уведомление через фасад Notification -
класс
Notification,
который является фасадом для отправки уведомлений