Метод send
Метод send класса Notification применяется для отправки
уведомлений одному или нескольким пользователям. Первым параметром
передаётся экземпляр модели уведомляемого пользователя или коллекция
таких моделей, вторым - экземпляр класса уведомления. Метод автоматически
определяет через какие каналы следует отправить уведомление, используя
метод via самого уведомления.
Синтаксис
<?php
use Illuminate\Support\Facades\Notification;
Notification::send($notifiable, $notification);
?>
Пример
Давайте отправим простое уведомление на почту одному пользователю:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Notifications\WelcomeNotification;
use Illuminate\Support\Facades\Notification;
class UserController extends Controller
{
public function sendWelcome(User $user)
{
Notification::send($user, new WelcomeNotification());
return response()->json(['message' => 'Notification sent']);
}
}
?>
Пример
Давайте отправим уведомление сразу нескольким пользователям:
<?php
namespace App\Http\Controllers;
use App\Models\User;
use App\Notifications\SystemNotification;
use Illuminate\Support\Facades\Notification;
class UserController extends Controller
{
public function sendBulk()
{
$users = User::where('active', true)->get();
Notification::send($users, new SystemNotification());
return response()->json(['message' => 'Notifications sent to ' . $users->count() . ' users']);
}
}
?>
Результат выполнения кода:
"Notifications sent to 5 users"
Пример
Давайте отправим уведомление с кастомизацией каналов доставки, используя коллекцию уведомляемых объектов:
<?php
namespace App\Http\Controllers;
use App\Models\Order;
use App\Models\User;
use App\Notifications\OrderShipped;
use Illuminate\Support\Facades\Notification;
class OrderController extends Controller
{
public function shipOrder(Order $order)
{
$admins = User::where('role', 'admin')->get();
Notification::send($admins, new OrderShipped($order));
return response()->json(['status' => 'Order shipped and admins notified']);
}
}
?>