Laravelメッセージシステムの使用方法

1625 ワード

通知の作成
>php artisan make:notification SendMail

AppNotificationsの下に作成した通知クラスを見つけて開き、編集します.//SendMail.php
 public function via($notifiable)
    {
        return ['database'];
    }

viaメソッドは通知がどのルートで送信かを指定し、laravelにはmail、database、'broadcast'、nexmo、slackここではdatabaseがデータベースを通じてメッセージを送信することを指定します.どのルートでメッセージを送信かは、このクラスの下にToXXXのメソッドが必要です.例えば、databaseチャネルにはToDatabaseメソッドが必要です.mailにはToMail対応が必要です.
新規メソッド//SendMail.php
public function toDatabase($notifiable)
    {
        return [
            'uid'=>99,
            'money'=>'$100',
            'content'=>$this->content
            ];
    }

データテーブルの作成
>php artisan notifications:table
>php artisan migrate

データベースにnotificationsテーブルが表示され、メッセージ通知を格納します.メッセージ//XxxController.phpをコントローラに送信します.use Notificationsテーブルはコントローラに表示されます.
use Illuminate\Notifications\Notifiable;

class TestController extends Controller
{
    use Notifiable;
 //        
public function test()
    {
        //$user         ,            
        //              ,              .
        $user = User::find(1);
        $user->notify(new SendMail('      '));
    }

ブラウザでメソッドにアクセスすると、データテーブルnotificationsのdataフィールドにさっき送信した内容が表示されます.
メッセージの表示
//      ,            ,       .
public function show()
    {
        $user = User::find(1);
        foreach ($user->Notifications as $notification) {
            dump($notification->data);
        }
    }