11

Laravel 5.3 通知機能を使用すると、通知が次のようにユーザーに送信されることがわかります。

$user->notify(new InvoicePaid($invoice));

私が信じている$userのは、通知対象のエンティティです。まだアカウントを持っていないユーザーに通知を送信したい場合はどうすればよいですか? 私のアプリでは、ユーザーが招待状を友達に送信して参加します。Laravel の通知を使用して、まだアカウントを持っていないユーザーに招待コードを送信しようとしています。

ユーザーが誰かを招待すると、そのデータは次のように Invite Model に保存されます。

class Invite extends Model
  {
    protected $table = 'invites';
    protected $fillable = array('name', 'email', 'invite_code', 'expires_at', 'invited_by');
    protected $dates = ['expires_at'];
   }

次のように、notify を使用して Invite モデルに通知を送信できると考えました。

$invite = Invite::find($inviteId);
$invite->notify(new InvitationNotification(ucfirst($invite->name), $invite->invite_code, $invite->expires_at));  

しかし、上記は機能しません。エラーが発生します:

Call to undefined method Illuminate\Database\Query\Builder::notify()

だから私の質問は:

  1. ユーザーモデルのみに通知を送信できますか?

  2. まだアカウントを持っていない新しいユーザーに通知を送信する方法はありますか?

  3. これらの場合、Notification の代わりに Laravel の Mailable クラスを使用するしかありませんか?

4

6 に答える 6

14

同じものを探しているあなたの投稿を見つけましたが、自分で答えました。

モデルをuse Notifiable;オンにする必要があります。Invite

次にインポートして、モデルuse Illuminate\Notifications\Notifiable;で使用できるようにする必要があります。->notifyInvite

$invite = Invite::create([
    'name' => $request->get('name'),
    'email' => $request->get('email'),
    'token' => str_random(60),
]);

$invite->notify(new UserInvite());

それが私が通知の送信を処理する方法です:)

$inviteその後、通知テンプレート内でパススルーして使用できます。

于 2016-11-27T12:05:18.617 に答える