添加laravel通知功能

时间:2018-04-07 11:55:50

标签: laravel function notifications add

我有下一个Notification类:

class WelcomeNotification extends Notification
{
    use Queueable;

    public function __construct()
    {
        //
    }

    public function via($notifiable)
    {
        return ['database'];
    }

    public function toDatabase($notifiable)
    {
        return [
            //
        ];
    }
}

我想为此添加一些功能。例如:

public function myFunction()
{
    return 'something';
}

但是$ user-> notifications-> first() - > myFunction什么都不返回

1 个答案:

答案 0 :(得分:2)

当你调用notifications()关系时,结果是使用DatabaseNotification模型的多态关系。正确的方法是继承DatabaseNotification并编写自定义函数。

例如,创建 app / DatabaseNotification / WelcomeNotification.php 并继承DatabaseNotification模型。

namespace App\DatabaseNotification;

use Illuminate\Notifications\DatabaseNotification;

class WelcomeNotification extends DatabaseNotification
{

    public function foo() {
        return 'bar';
    }

}

并覆盖使用notifications()特征的Notifiable函数:

use App\DatabaseNotification\WelcomeNotification;

class User extends Authenticatable
{
    use Notifiable;

    ...

    public function notifications()
    {
        return $this->morphMany(WelcomeNotification::class, 'notifiable')
                            ->orderBy('created_at', 'desc');
    }

    ...

}

现在您可以按如下方式调用自定义函数:

$user->notifications->first()->foo();