如何修复 Class 'App\Http\Controllers\Notification' 在 laravel 中找不到的问题?

How to fix Class 'App\Http\Controllers\Notification' not found in laravel?

我有一个控制器,它监听新的计划创建并通过 ajax 将结果发送回视图。在其中我想添加一个通知,以便在由于在特定日期和时间缺少资源而无法完成计划时向用户发送电子邮件。

问题是我收到以下错误:

Class 'App\Http\Controllers\Notification' not found in /laravel/app/Http/Controllers/DadosAgendamentoController.php on line 89

文件夹结构是这样的:

-app
    -Http
        -Controllers 
            DadosAgendamentoController.php
    -Notifications
        AgendamentoPendente.php

DadosAgendamentoController.php头码:

namespace App\Http\Controllers;

use Input;
use Request;
use App\Servicos;
use App\Disponibilidades;
use App\Estabelecimentos;
use App\HorariosEstabelecimento;
use App\Agendamento;
use App\User;
use App\Notifications\AgendamentoPendente;

第 88 和 89 行:

$user = User::where('id',1)->get();
Notification::send($user, new AgendamentoPendente(1));

通过我的控制器,我可以访问上面的所有 classes,但不能访问 AgendamentoPendente

我的目标是向管理员发送一封电子邮件,以便他可以在资源在所需日期和时间不可用时向客户建议新的日期和时间。

如何解决?我可以访问此控制器中的 class 吗?怎么样?

Notifications may be sent in two ways: using the notify method of the Notifiable trait or using the Notification facade.

https://laravel.com/docs/5.3/notifications#sending-notifications

选项 1

可以使用notify()方法:

$user->notify(new AgendamentoPendente(1));

此外,确保 User class 使用 Notifiable 特征:

use Illuminate\Notifications\Notifiable;

class User extends Authenticatable
{
    use Notifiable;

选项 2

使用具有完整命名空间的外观:

\Notification::send($user, new AgendamentoPendente(1));

在你的控制器中添加use Notification;

或者,使用 \Notification::send($user, new AgendamentoPendente(1));

在控制器顶部添加:

use App\Notifications\AgendamentoPendente;

我遇到了同样的问题,这解决了它

另请注意,如果您使用外观,请确保您的用户从数据库中查询电子邮件字段

$users = User::select("email")->get();
\Notification::send($users, new AgendamentoPendente(1));

你必须在顶部使用外观

use Illuminate\Support\Facades\Notification;

可以参考这个教程

https://thecodingsolution.com/view/laravel-notofication-laravel-database-notification

可以拉取Lumen 8.0使用的通知库:

"illuminate/notifications": "5.3.*" into your composer.json then running composer update to pull in the notification libraries.

您还需要添加

$app->register(Illuminate\Notifications NotificationServiceProvider::class);

给你的bootstrap/app.php

这个过程对我有用。 谢谢