Cómo enviar una notificación en Laravel

Se requieren notificaciones en casi todas las aplicaciones, especialmente en la categoría de comercio electrónico, redes sociales o cualquier producto digital destacado. En este tutorial, aprenderemos cómo enviar una notificación en Laravel. Para enviar una notificación en Laravel, realizamos los siguientes pasos.

Paso 1: Instalación de Laravel

Si no tiene una instalación de Laravel 8 en su local, simplemente ejecute el siguiente comando a continuación:

composer create-project --prefer-dist laravel/laravel laravel-email-notification

Paso 2: Configuración de la base de datos

Si su proyecto Laravel es nuevo, entonces necesita actualizar las credenciales de su base de datos. Simplemente abra el archivo .env en su proyecto Laravel 9.

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=your_database_name_here
DB_USERNAME=your_database_username_here
DB_PASSWORD=your_database_password_here

Paso 3: Configuración de la migración

Aquí necesitamos generar primero la tabla de notificaciones antes de ejecutar las migraciones. Ejecute amablemente el siguiente comando:

php artisan notifications:table
php artisan migrate

Luego, una vez hecho esto, creemos una sembradora para nuestro usuario. Ejecute el siguiente comando:

php artisan make:seeder CreateUsersSeeder

Una vez que nuestra sembradora se genera amablemente en el directorio base de datos/sembradoras . Abra el CreateUsersSeeder.phpy verá el siguiente código:

<?php

namespace Database\Seeders;

use App\Models\User;
use Illuminate\Database\Seeder;

class CreateUsersSeeder extends Seeder
{
    /**
     * Run the database seeds.
     *
     * @return void
     */
    public function run()
    {
        User::create([
            'name' => 'Juan',
            'email' => 'email@gmail.com',
            'password' => bcrypt('password')
        ]);
    }
}

Luego ejecute el siguiente comando:

php artisan db:seed --class=CreateUsersSeeder

Paso 4: Hacer la notificación por correo electrónico de Laravel

Ahora, generemos nuestro ejemplo de notificación por correo electrónico de Laravel, lo nombraremos como EmailNotification. Ejecute el siguiente comando para hacer esto.

php artisan make:notification EmailNotification

Una vez hecho esto, navegue App/Notificationy ábralo EmailNotification.phpy luego edítelo. Vea el siguiente ejemplo:

<?php

namespace App\Notifications;

use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification;

class EmailNotification extends Notification
{
    use Queueable;

    /**
     * @var array $project
     */
    protected $project;

    /**
     * Create a new notification instance.
     *
     * @return void
     */
    public function __construct($project)
    {
        $this->project = $project;
    }

    /**
     * Get the notification's delivery channels.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function via($notifiable)
    {
        return ['mail','database'];
    }

    /**
     * Get the mail representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return \Illuminate\Notifications\Messages\MailMessage
     */
    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->greeting($this->project['greeting'])
                    ->line($this->project['body'])
                    ->action($this->project['actionText'], $this->project['actionURL'])
                    ->line($this->project['thanks']);
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toDatabase($notifiable)
    {
        return [
            'project_id' => $this-How to Send a Notification in Laravel with Example>project['id']
        ];
    }

    /**
     * Get the array representation of the notification.
     *
     * @param  mixed  $notifiable
     * @return array
     */
    public function toArray($notifiable)
    {
        return [
            //
        ];
    }
}

Paso 5: Configuración de rutas

En mi ejemplo, crearé manualmente mis rutas crudas. Simplemente abra el archivo "routes/web.php" y agregue las siguientes rutas.

<?php

use Illuminate\Support\Facades\Route;

/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::get('/send', '\App\Http\Controllers\HomeController@send')->name('home.send');

Paso 6: Configuración del controlador

En esta sección, agregaremos nuestra notificación de correo electrónico en nuestro HomeControllercomo configuramos en nuestras rutas. Vea a continuación el código completo de nuestro controlador:

<?php

namespace App\Http\Controllers;

use Notification;
use App\Models\User;
use Illuminate\Http\Request;
use App\Notifications\EmailNotification;

class HomeController extends Controller
{
    public function send() 
    {
    	$user = User::first();
  
        $project = [
            'greeting' => 'Hi '.$user->name.',',
            'body' => 'This is the project assigned to you.',
            'thanks' => 'Thank you this is from codeanddeploy.com',
            'actionText' => 'View Project',
            'actionURL' => url('/'),
            'id' => 57
        ];
  
        Notification::send($user, new EmailNotification($project));
   
        dd('Notification sent!');
    }
}

Ahora nuestro código está listo para enviar notificaciones a nuestros usuarios. Puede probarlo ahora ejecutando el comando de servicio:

php artisan serve

Luego ejecute la siguiente URL en su navegador para enviar una notificación por correo electrónico a su usuario.

http://127.0.0.1:8000/send

#laravel  #php  

1.65 GEEK