{"id":3212,"date":"2024-12-13T09:53:54","date_gmt":"2024-12-13T12:53:54","guid":{"rendered":"https:\/\/thiagorossi.com.br\/blog\/?p=3212"},"modified":"2025-12-08T18:47:53","modified_gmt":"2025-12-08T21:47:53","slug":"laravel-notifications","status":"publish","type":"post","link":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/","title":{"rendered":"Laravel Notifications"},"content":{"rendered":"<span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>\n<p class=\"has-medium-font-size wp-block-paragraph\">O sistema de <strong>Notifications (Notifica\u00e7\u00f5es)<\/strong> do <strong>Laravel<\/strong> fornece uma maneira poderosa e flex\u00edvel de enviar mensagens a seus usu\u00e1rios atrav\u00e9s de diversos canais, como e-mail, banco de dados, SMS e Slack. Diferente do sistema de <strong>Mail<\/strong> (que \u00e9 focado apenas em e-mails), as notifica\u00e7\u00f5es s\u00e3o centradas no <strong>evento<\/strong> e no <strong>usu\u00e1rio notific\u00e1vel<\/strong>, permitindo que a mesma mensagem seja adaptada para a forma de entrega ideal.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">1. \ud83c\udfd7\ufe0f Estrutura e Cria\u00e7\u00e3o de Notifica\u00e7\u00f5es<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Uma Notifica\u00e7\u00e3o \u00e9 uma classe que herda de <code>Illuminate\\Notifications\\Notification<\/code> e define como a mensagem deve ser formatada para cada canal.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">A. Gerando a Notifica\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Bash<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php artisan make:notification NewCommentNotification\n# Cria App\/Notifications\/NewCommentNotification.php\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">B. Defini\u00e7\u00e3o da Notifica\u00e7\u00e3o<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">A classe armazena os dados relevantes e usa o m\u00e9todo <code>via()<\/code> para especificar os canais ativos.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&lt;?php\n\nnamespace App\\Notifications;\n\/\/ ... imports\n\nclass NewCommentNotification extends Notification\n{\n    use Queueable; \/\/ Para enviar o processamento para a fila\n\n    public $comment;\n\n    public function __construct(Comment $comment) \/\/ Injeta o objeto Comment\n    {\n        $this-&gt;comment = $comment;\n    }\n\n    \/**\n     * Define os canais pelos quais a notifica\u00e7\u00e3o deve ser enviada.\n     *\/\n    public function via($notifiable)\n    {\n        \/\/ Esta notifica\u00e7\u00e3o ser\u00e1 enviada por e-mail e salva no banco de dados\n        return &#91;'mail', 'database']; \n    }\n\n    \/\/ ... m\u00e9todos toMail, toDatabase, etc.\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">2. \ud83d\udce7 Canais Essenciais de Notifica\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para cada canal especificado em <code>via()<\/code>, deve haver um m\u00e9todo correspondente na classe de notifica\u00e7\u00e3o (ex: <code>toMail<\/code>, <code>toDatabase<\/code>).<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">A. Canal de E-mail (<code>toMail<\/code>)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Usa a classe <strong><code>MailMessage<\/code><\/strong> para criar e-mails transacionais rapidamente, utilizando um <em>template<\/em> Blade responsivo padr\u00e3o do Laravel.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use Illuminate\\Notifications\\Messages\\MailMessage;\n\npublic function toMail($notifiable)\n{\n    \/\/ O $notifiable \u00e9 o usu\u00e1rio ($user)\n    return (new MailMessage)\n                -&gt;subject('Novo Coment\u00e1rio em sua Publica\u00e7\u00e3o')\n                -&gt;greeting('Ol\u00e1, ' . $notifiable-&gt;name . '!')\n                -&gt;line('Voc\u00ea recebeu um novo coment\u00e1rio em sua publica\u00e7\u00e3o: \"' . $this-&gt;comment-&gt;post-&gt;title . '\".')\n                -&gt;action('Ver Coment\u00e1rio', url('\/posts\/' . $this-&gt;comment-&gt;post_id . '#comment-' . $this-&gt;comment-&gt;id))\n                -&gt;line('Obrigado por usar nossa aplica\u00e7\u00e3o!');\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">B. Canal de Banco de Dados (<code>toDatabase<\/code>)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Salva a notifica\u00e7\u00e3o em uma tabela <code>notifications<\/code> no banco de dados, permitindo que o usu\u00e1rio visualize notifica\u00e7\u00f5es <em>in-app<\/em> (como o sino de notifica\u00e7\u00f5es do Facebook).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>public function toDatabase($notifiable)\n{\n    return &#91;\n        'post_id' =&gt; $this-&gt;comment-&gt;post_id,\n        'comment_id' =&gt; $this-&gt;comment-&gt;id,\n        'comment_author' =&gt; $this-&gt;comment-&gt;user-&gt;name,\n    ];\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">C. Canais de SMS (<code>toNexmo<\/code> ou <code>toVonage<\/code>)<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Requer a configura\u00e7\u00e3o de um provedor de SMS (como <strong>Vonage<\/strong> ou <strong>Twilio<\/strong>).<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use Illuminate\\Notifications\\Messages\\VonageMessage;\n\npublic function toVonage($notifiable)\n{\n    return (new VonageMessage)\n                -&gt;content('Seu post tem um novo coment\u00e1rio! Acesse o app para ver.');\n}\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">3. \ud83d\udce4 Enviando a Notifica\u00e7\u00e3o<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">O Laravel adiciona o <em>trait<\/em> <strong><code>Notifiable<\/code><\/strong> por padr\u00e3o ao seu modelo <code>User<\/code> (e deve ser adicionado a qualquer modelo que possa receber notifica\u00e7\u00f5es).<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">A. Usando o M\u00e9todo <code>notify()<\/code><\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Para enviar a notifica\u00e7\u00e3o, chame o m\u00e9todo <code>notify()<\/code> no modelo notific\u00e1vel:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ No seu Controller ou Service\n$postAuthor = $comment-&gt;post-&gt;author; \n$newCommentNotification = new NewCommentNotification($comment);\n\n\/\/ O Laravel verifica o m\u00e9todo via() e envia para Mail e Database.\n$postAuthor-&gt;notify($newCommentNotification);\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h3 class=\"wp-block-heading\">B. Enviando para Cole\u00e7\u00f5es<\/h3>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Voc\u00ea pode notificar m\u00faltiplos usu\u00e1rios de uma vez usando a <strong>Facade <code>Notification<\/code><\/strong>:<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>use Illuminate\\Support\\Facades\\Notification;\n\n$users = User::where('wants_updates', true)-&gt;get();\nNotification::send($users, new GlobalUpdateNotification());\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">4. \ud83d\uddc3\ufe0f Manipulando Notifica\u00e7\u00f5es de Banco de Dados<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">As notifica\u00e7\u00f5es salvas no banco de dados t\u00eam m\u00e9todos convenientes para serem gerenciadas:<\/p>\n\n\n\n<figure class=\"wp-block-table has-medium-font-size\"><table class=\"has-fixed-layout\"><thead><tr><td><strong>M\u00e9todo<\/strong><\/td><td><strong>Fun\u00e7\u00e3o<\/strong><\/td><td><strong>Exemplo<\/strong><\/td><\/tr><\/thead><tbody><tr><td><strong><code>unreadNotifications<\/code><\/strong><\/td><td>Obt\u00e9m todas as notifica\u00e7\u00f5es n\u00e3o lidas.<\/td><td><code>$user-&gt;unreadNotifications<\/code><\/td><\/tr><tr><td><strong><code>markAsRead()<\/code><\/strong><\/td><td>Marca uma notifica\u00e7\u00e3o ou todas as n\u00e3o lidas como lidas.<\/td><td><code>$notification-&gt;markAsRead();<\/code><\/td><\/tr><tr><td><strong><code>readNotifications<\/code><\/strong><\/td><td>Obt\u00e9m todas as notifica\u00e7\u00f5es lidas.<\/td><td><code>$user-&gt;readNotifications<\/code><\/td><\/tr><tr><td><strong><code>markAsUnread()<\/code><\/strong><\/td><td>Marca a notifica\u00e7\u00e3o como n\u00e3o lida.<\/td><td><code>$notification-&gt;markAsUnread();<\/code><\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">PHP<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/\/ Obtendo o n\u00famero de notifica\u00e7\u00f5es n\u00e3o lidas\n$unreadCount = $user-&gt;unreadNotifications-&gt;count(); \n\n\/\/ Marcando todas as notifica\u00e7\u00f5es como lidas\n$user-&gt;unreadNotifications-&gt;markAsRead();\n<\/code><\/pre>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">5. \ud83e\uddd1\u200d\ud83d\udcbb Canais Personalizados<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Se voc\u00ea precisa enviar notifica\u00e7\u00f5es para canais n\u00e3o suportados nativamente (como Discord, WhatsApp, Telegram, etc.), voc\u00ea pode criar um <strong>Canal Personalizado<\/strong>. Basta definir uma classe que implemente o m\u00e9todo <code>send($notifiable, Notification $notification)<\/code> e adicione um m\u00e9todo <code>to[NomeDoSeuCanal]<\/code> na sua notifica\u00e7\u00e3o.<\/p>\n\n\n\n<div style=\"height:35px\" aria-hidden=\"true\" class=\"wp-block-spacer\"><\/div>\n\n\n\n<h2 class=\"wp-block-heading has-large-font-size\">\u2705 Conclus\u00e3o Laravel Notifications<\/h2>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\"><strong>Laravel Notifications<\/strong>: O sistema de notifica\u00e7\u00f5es \u00e9 uma ferramenta fundamental para o engajamento do usu\u00e1rio, oferecendo flexibilidade para a entrega multi-canal (e-mail, <em>in-app<\/em>, SMS). Ao utilizar as classes de notifica\u00e7\u00e3o, voc\u00ea mant\u00e9m a l\u00f3gica de comunica\u00e7\u00e3o desacoplada do c\u00f3digo de neg\u00f3cio e aproveita a estrutura de filas do Laravel para garantir que o envio seja <strong>ass\u00edncrono<\/strong> e <strong>r\u00e1pido<\/strong>.<\/p>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">Mas antes de dominar o Laravel, se for o seu caso, toda jornada tem um in\u00edcio. Vamos entender quais s\u00e3o os conhecimentos b\u00e1sicos necess\u00e1rios para aproveitar ao m\u00e1ximo este poderoso framework. Para iniciar seus estudos no Laravel, voc\u00ea precisar\u00e1 dominar as seguintes tecnologias:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/html\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp\" alt=\"HTML\" class=\"wp-image-600\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/html-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">HTML<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/css\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp\" alt=\"CSS\" class=\"wp-image-702\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/Capa-Artigos-Linux-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">CSS<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/javascript\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp\" alt=\"Javascript\" class=\"wp-image-804\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/javascript-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">JavaScript<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/sql\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp\" alt=\"SQL\" class=\"wp-image-942\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2.webp 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/05\/Capa-Artigos-2-300x169.webp 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">SQL<\/figcaption><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"\/category\/php\"><img loading=\"lazy\" decoding=\"async\" width=\"758\" height=\"426\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png\" alt=\"Capa Curso PHP\" class=\"wp-image-2835\" srcset=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP.png 758w, https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Capa-PHP-300x169.png 300w\" sizes=\"auto, (max-width: 758px) 100vw, 758px\" \/><\/a><figcaption class=\"wp-element-caption\">PHP<\/figcaption><\/figure>\n<\/div>\n<\/div>\n\n\n\n<p class=\"has-medium-font-size wp-block-paragraph\">E se voc\u00ea gosta do nosso conte\u00fado, n\u00e3o deixe de contribuir adquirindo os servi\u00e7os e produtos dos nossos apoiadores e empresas que somos associados:<\/p>\n\n\n\n<div class=\"wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex\">\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/hostinger.com.br\/?REFERRALCODE=1THIAGO62\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/03\/hostinger.png\" alt=\"Hospedagem Hostinger\" class=\"wp-image-92\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNDYlc\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/ofertas-amazon.webp\" alt=\"Ofertas Amazon\" class=\"wp-image-1308\"\/><\/a><\/figure>\n<\/div>\n\n\n\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\n<figure class=\"wp-block-image size-full\"><a href=\"https:\/\/amzn.to\/3SNKmt0\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"250\" src=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/08\/amazonprime.webp\" alt=\"Amazon Prime\" class=\"wp-image-1307\"\/><\/a><\/figure>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p><span class=\"span-reading-time rt-reading-time\" style=\"display: block;\"><span class=\"rt-label rt-prefix\">Tempo de leitura: <\/span> <span class=\"rt-time\"> 4<\/span> <span class=\"rt-label rt-postfix\">minutos<\/span><\/span>O sistema de Notifications (Notifica\u00e7\u00f5es) do Laravel fornece uma maneira poderosa e flex\u00edvel de enviar&#8230;<\/p>\n","protected":false},"author":1,"featured_media":1642,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[18],"tags":[],"class_list":["post-3212","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-laravel","wpcat-18-id"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.7 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Laravel Notifications - BLOG THIAGO ROSSI<\/title>\n<meta name=\"description\" content=\"Laravel Notifications: Neste artigo, vamos explorar em detalhes o sistema de notifica\u00e7\u00f5es do Laravel, desde a cria\u00e7\u00e3o de notifica\u00e7\u00f5es ...\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/\" \/>\n<meta property=\"og:locale\" content=\"pt_BR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel Notifications - BLOG THIAGO ROSSI\" \/>\n<meta property=\"og:description\" content=\"Laravel Notifications: Neste artigo, vamos explorar em detalhes o sistema de notifica\u00e7\u00f5es do Laravel, desde a cria\u00e7\u00e3o de notifica\u00e7\u00f5es ...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/\" \/>\n<meta property=\"og:site_name\" content=\"BLOG THIAGO ROSSI\" \/>\n<meta property=\"article:published_time\" content=\"2024-12-13T12:53:54+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-12-08T21:47:53+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp\" \/>\n\t<meta property=\"og:image:width\" content=\"758\" \/>\n\t<meta property=\"og:image:height\" content=\"426\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/webp\" \/>\n<meta name=\"author\" content=\"Thiago Rossi\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"Thiago Rossi\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. tempo de leitura\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/\"},\"author\":{\"name\":\"Thiago Rossi\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\"},\"headline\":\"Laravel Notifications\",\"datePublished\":\"2024-12-13T12:53:54+00:00\",\"dateModified\":\"2025-12-08T21:47:53+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/\"},\"wordCount\":551,\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Laravel.webp\",\"articleSection\":[\"Laravel\"],\"inLanguage\":\"pt-BR\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/\",\"name\":\"Laravel Notifications - BLOG THIAGO ROSSI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Laravel.webp\",\"datePublished\":\"2024-12-13T12:53:54+00:00\",\"dateModified\":\"2025-12-08T21:47:53+00:00\",\"description\":\"Laravel Notifications: Neste artigo, vamos explorar em detalhes o sistema de notifica\u00e7\u00f5es do Laravel, desde a cria\u00e7\u00e3o de notifica\u00e7\u00f5es ...\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#breadcrumb\"},\"inLanguage\":\"pt-BR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#primaryimage\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Laravel.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/11\\\/Laravel.webp\",\"width\":758,\"height\":426,\"caption\":\"Laravel\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/laravel-notifications\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel Notifications\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"name\":\"THIAGO ROSSI\",\"description\":\"Mais de 20 anos de experi\u00eancia no mercado de TI!\",\"publisher\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\"},\"alternateName\":\"TR | CURSO WEB DEV\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"pt-BR\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#organization\",\"name\":\"THIAGO ROSSI\",\"alternateName\":\"TR | CURSO WEB DEV\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"contentUrl\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/04\\\/new-logo.webp\",\"width\":300,\"height\":300,\"caption\":\"THIAGO ROSSI\"},\"image\":{\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/#\\\/schema\\\/person\\\/5f28286948ec2afdeb2e044a2196cd87\",\"name\":\"Thiago Rossi\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"pt-BR\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g\",\"caption\":\"Thiago Rossi\"},\"description\":\"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \\\"GDD \u2013 O Guia Definitivo\\\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.\",\"sameAs\":[\"https:\\\/\\\/thiagorossi.com.br\\\/blog\",\"https:\\\/\\\/instagram.com\\\/thiagorossix86\",\"https:\\\/\\\/linkedin.com\\\/in\\\/thiagox86\"],\"url\":\"https:\\\/\\\/thiagorossi.com.br\\\/blog\\\/author\\\/thiagorossi\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Laravel Notifications - BLOG THIAGO ROSSI","description":"Laravel Notifications: Neste artigo, vamos explorar em detalhes o sistema de notifica\u00e7\u00f5es do Laravel, desde a cria\u00e7\u00e3o de notifica\u00e7\u00f5es ...","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/","og_locale":"pt_BR","og_type":"article","og_title":"Laravel Notifications - BLOG THIAGO ROSSI","og_description":"Laravel Notifications: Neste artigo, vamos explorar em detalhes o sistema de notifica\u00e7\u00f5es do Laravel, desde a cria\u00e7\u00e3o de notifica\u00e7\u00f5es ...","og_url":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/","og_site_name":"BLOG THIAGO ROSSI","article_published_time":"2024-12-13T12:53:54+00:00","article_modified_time":"2025-12-08T21:47:53+00:00","og_image":[{"width":758,"height":426,"url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp","type":"image\/webp"}],"author":"Thiago Rossi","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"Thiago Rossi","Est. tempo de leitura":"5 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#article","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/"},"author":{"name":"Thiago Rossi","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87"},"headline":"Laravel Notifications","datePublished":"2024-12-13T12:53:54+00:00","dateModified":"2025-12-08T21:47:53+00:00","mainEntityOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/"},"wordCount":551,"publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp","articleSection":["Laravel"],"inLanguage":"pt-BR"},{"@type":"WebPage","@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/","url":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/","name":"Laravel Notifications - BLOG THIAGO ROSSI","isPartOf":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#primaryimage"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#primaryimage"},"thumbnailUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp","datePublished":"2024-12-13T12:53:54+00:00","dateModified":"2025-12-08T21:47:53+00:00","description":"Laravel Notifications: Neste artigo, vamos explorar em detalhes o sistema de notifica\u00e7\u00f5es do Laravel, desde a cria\u00e7\u00e3o de notifica\u00e7\u00f5es ...","breadcrumb":{"@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#breadcrumb"},"inLanguage":"pt-BR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/"]}]},{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#primaryimage","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/11\/Laravel.webp","width":758,"height":426,"caption":"Laravel"},{"@type":"BreadcrumbList","@id":"https:\/\/thiagorossi.com.br\/blog\/laravel-notifications\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/thiagorossi.com.br\/blog\/"},{"@type":"ListItem","position":2,"name":"Laravel Notifications"}]},{"@type":"WebSite","@id":"https:\/\/thiagorossi.com.br\/blog\/#website","url":"https:\/\/thiagorossi.com.br\/blog\/","name":"THIAGO ROSSI","description":"Mais de 20 anos de experi\u00eancia no mercado de TI!","publisher":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#organization"},"alternateName":"TR | CURSO WEB DEV","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/thiagorossi.com.br\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"pt-BR"},{"@type":"Organization","@id":"https:\/\/thiagorossi.com.br\/blog\/#organization","name":"THIAGO ROSSI","alternateName":"TR | CURSO WEB DEV","url":"https:\/\/thiagorossi.com.br\/blog\/","logo":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","contentUrl":"https:\/\/thiagorossi.com.br\/blog\/wp-content\/uploads\/2024\/04\/new-logo.webp","width":300,"height":300,"caption":"THIAGO ROSSI"},"image":{"@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/linkedin.com\/in\/thiagox86"]},{"@type":"Person","@id":"https:\/\/thiagorossi.com.br\/blog\/#\/schema\/person\/5f28286948ec2afdeb2e044a2196cd87","name":"Thiago Rossi","image":{"@type":"ImageObject","inLanguage":"pt-BR","@id":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bb28b4665f4162bab9fbef8db5a7f00597f79ab90ece9a67189bb6bce78d5786?s=96&d=retro&r=g","caption":"Thiago Rossi"},"description":"Com mais de 20 anos de jornada na tecnologia, minha trajet\u00f3ria evoluiu do ensino t\u00e9cnico \u00e0 arquitetura de sistemas complexos. Hoje, foco minha expertise no desenvolvimento de solu\u00e7\u00f5es de Intelig\u00eancia Artificial nativa e an\u00e1lise de dados p\u00fablicos, utilizando o ecossistema PHP para transformar dados brutos em transpar\u00eancia e efici\u00eancia. Como autor e desenvolvedor, acredito na democratiza\u00e7\u00e3o do conhecimento. Essa vis\u00e3o resultou em uma biblioteca de mais de 530 artigos gratuitos, cobrindo desde a base do WebDev e Infraestrutura at\u00e9 os bastidores da ind\u00fastria de Jogos e IA. No universo de Game Design, sou autor do livro \"GDD \u2013 O Guia Definitivo\" e documento ativamente meus processos atrav\u00e9s de DevLogs, unindo rigor t\u00e9cnico e criatividade em projetos desenvolvidos com GDevelop 5. Meu compromisso \u00e9 conectar engenharia de ponta com as reais oportunidades do mercado de tecnologia.","sameAs":["https:\/\/thiagorossi.com.br\/blog","https:\/\/instagram.com\/thiagorossix86","https:\/\/linkedin.com\/in\/thiagox86"],"url":"https:\/\/thiagorossi.com.br\/blog\/author\/thiagorossi\/"}]}},"_links":{"self":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/3212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/comments?post=3212"}],"version-history":[{"count":4,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/3212\/revisions"}],"predecessor-version":[{"id":5216,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/posts\/3212\/revisions\/5216"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media\/1642"}],"wp:attachment":[{"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/media?parent=3212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/categories?post=3212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/thiagorossi.com.br\/blog\/wp-json\/wp\/v2\/tags?post=3212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}