给所有用户的 Artisan 命令通知给出了 BadMethodCallException

用户代理

我如何创建一个 artisan 命令来向系统中的所有用户发送数据库通知,其中包含他们在系统中使用了多长时间的信息?

我的 SendEmails 命令如下所示:

    <?php

namespace App\Console\Commands;

use Illuminate\Console\Command;
use App\User;
use Illuminate\Support\Facades\Mail;
use App\Mail\UserEmails;
use Illuminate\Support\Facades\Notification;

class SendEmails extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'send:emails';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Send Email to allusers';

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return mixed
     */
    public function handle()
    {
        $users = User::all();
        foreach($users as $user){
            $created_at = $user->created_at;
            Notification::send($user, new SendEmailsNotification($created_at));
        }
    }
}

然后我创建了通知表,进行了迁移,代码如下:

<?php

namespace App\Notifications;

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

class SendEmailsNotification extends Notification
{
    use Queueable;

    public $created_at;

    public function __construct($created_at)
    {
        $this->created_at = $created_at;
    }

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

    public function toMail($notifiable)
    {
        return (new MailMessage)
                    ->line('The introduction to the notification.')
                    ->action('Notification Action', url('/'))
                    ->line('Thank you for using our application!');
    }

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

用户.php:

<?php

namespace App;

use Illuminate\Notifications\Notifiable;
//use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    //use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password', 'address', 'image'
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        //'email_verified_at' => 'datetime',
        'address' => 'array'
    ];

    protected $uploads = '/images/';

    public function getImageAttribute($image){
        return $this->uploads . $image;
    }

    public function contacts(){
        return $this->hasMany('App\Contact');
    }
}

当我运行工匠命令“php artisan send:emails”时,我在控制台中看到以下错误:

BadMethodCallException : 调用未定义的方法 App\User::routeNotificationFor()

如何向所有用户发送通知?

右转

您只需要取消注释该// use Notifiable行。

所述Notifiable性状包括其他两个特点,其中之一是RoutesNotifications性状。

RoutesNotifications特点是,你需要能够发送通知到什么User


此外,您应该能够将SendEmails命令中的代码简化为:

Notification::send(User::all(), new SendEmailsNotification()); 

而不是明确地传递created_at你可以从$notifiable你的SendEmailsNotification(因为在这种情况下无论如何$notifiable都是User模型)例如

public function toArray($notifiable)
{
    return [
        'data' => 'Account Created' . $notifiable->created_at->diffForHumans()
    ];
}

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Laravel Artisan迁移[BadMethodCallException]

来自分类Dev

Laravel Artisan迁移[BadMethodCallException]

来自分类Dev

1所有用户的通知

来自分类Dev

向Firebase中的所有用户推送通知

来自分类Dev

GCP命令读取所有用户的权限

来自分类Dev

所有用户执行的sudo命令的详细信息

来自分类Dev

从ps -eaf命令获取所有用户的Python脚本

来自分类Dev

获取界面的所有 Laravel artisan 命令

来自分类Dev

Artisan migrate 命令没有输出

来自分类Dev

如何记录服务器上所有用户的所有Bash命令?

来自分类Dev

如何记录所有用户提交的所有UNIX Shell命令?

来自分类Dev

如何记录服务器上所有用户的所有Bash命令?

来自分类Dev

解析云推送通知将推送给所有用户,而不是目标用户

来自分类Dev

禁用所有用户的关机命令,甚至是root用户-结果?

来自分类Dev

用户友好命令可列出Ubuntu系统上的所有用户?

来自分类Dev

用户注销时通过电子邮件发送所有用户命令

来自分类Dev

Rails-返回给定参数的所有用户给出ArguemntError(1表示0)

来自分类Dev

Firebase Cloud Messaging主题被忽略,所有用户不断收到通知

来自分类Dev

TFS 12-通知是否为所有用户分配了工作项目

来自分类Dev

向所有用户以及特定的设备令牌发送推送通知

来自分类Dev

向登录Webapp的所有用户播放实时通知声音,而无需重新加载页面

来自分类Dev

如何使用消息 api 向所有用户发送 firebase 推送通知

来自分类Dev

如何将消息发送给帖子中列出了用户名的所有用户?

来自分类Dev

如何使用命令显示所有用户和组?

来自分类Dev

通过命令行列出Windows系统上的所有用户帐户

来自分类Dev

我应该在哪里放置要为所有用户自动导出的命令?

来自分类Dev

如何使用命令显示所有用户和组?

来自分类Dev

如何在所有用户的终端中使用命令运行应用程序

来自分类Dev

列出Linux服务器上所有用户名的命令

Related 相关文章

  1. 1

    Laravel Artisan迁移[BadMethodCallException]

  2. 2

    Laravel Artisan迁移[BadMethodCallException]

  3. 3

    1所有用户的通知

  4. 4

    向Firebase中的所有用户推送通知

  5. 5

    GCP命令读取所有用户的权限

  6. 6

    所有用户执行的sudo命令的详细信息

  7. 7

    从ps -eaf命令获取所有用户的Python脚本

  8. 8

    获取界面的所有 Laravel artisan 命令

  9. 9

    Artisan migrate 命令没有输出

  10. 10

    如何记录服务器上所有用户的所有Bash命令?

  11. 11

    如何记录所有用户提交的所有UNIX Shell命令?

  12. 12

    如何记录服务器上所有用户的所有Bash命令?

  13. 13

    解析云推送通知将推送给所有用户,而不是目标用户

  14. 14

    禁用所有用户的关机命令,甚至是root用户-结果?

  15. 15

    用户友好命令可列出Ubuntu系统上的所有用户?

  16. 16

    用户注销时通过电子邮件发送所有用户命令

  17. 17

    Rails-返回给定参数的所有用户给出ArguemntError(1表示0)

  18. 18

    Firebase Cloud Messaging主题被忽略,所有用户不断收到通知

  19. 19

    TFS 12-通知是否为所有用户分配了工作项目

  20. 20

    向所有用户以及特定的设备令牌发送推送通知

  21. 21

    向登录Webapp的所有用户播放实时通知声音,而无需重新加载页面

  22. 22

    如何使用消息 api 向所有用户发送 firebase 推送通知

  23. 23

    如何将消息发送给帖子中列出了用户名的所有用户?

  24. 24

    如何使用命令显示所有用户和组?

  25. 25

    通过命令行列出Windows系统上的所有用户帐户

  26. 26

    我应该在哪里放置要为所有用户自动导出的命令?

  27. 27

    如何使用命令显示所有用户和组?

  28. 28

    如何在所有用户的终端中使用命令运行应用程序

  29. 29

    列出Linux服务器上所有用户名的命令

热门标签

归档