【问题标题】:How can I integrate Laravel Notifications with my website?如何将 Laravel 通知与我的网站集成?
【发布时间】:2018-12-31 23:06:59
【问题描述】:

我最近完成了使用 Laravel 设置数据库通知的任务。我现在可以发送通知了。然而,我现在想做的是:当我发送通知时,我希望在我的网站上出现一个图标(例如铃铛),用户可以将鼠标悬停在该图标上并查看通知标题,或单击它阅读完整内容。这可能吗?

另外,有没有办法让我获得一个数据库来查看我发送的所有通知?也许使用 MySQL。

【问题讨论】:

  • 有可能吗?当然。您的问题非常广泛且不清楚。
  • 我不认为它不清楚。我要求提供有关如何实施的具体说明。
  • 嗯,您说您完成了数据库通知,并提出了一个关于如何为它们实施前端的广泛问题,这并不具体,也没有明确的解决方案。然后你问如何让数据库看到通知,这是一个完全不同的问题,并且与你说你完成了数据库通知相冲突,所以这就是不清楚的原因。 Stackoverflow 不是一个讨论网站,它是一个问答,不鼓励没有明确解决方案的问题。我建议您访问帮助部分,了解如何改进您的问题。
  • 我认为你误解了这一点。我使用 Laravel 通过数据库通道(邮件、slack、SMS 等众多选项之一)发送通知。现在我想查看我已发送的所有通知的数据库。我已经创建了前端 - 只是想知道如何让通知显示在那里!

标签: php database laravel notifications


【解决方案1】:

获取最新通知和计数非常容易。虽然这里唯一的区别因素是您如何知道所有通知中都有新通知。所以我会在你的数据库上建议这个设计。

数据库

[id, name, latest]

注意:最新列是整数类型。例如。 0 或 1,其中 0 不是最新的,1 是最新的。

插入通知 因此,当您插入数据时,将数据库中的新通知保存为最新的,例如

$notification = new Notification();
$notification->name = 'whatever';
$notification->latest = 1; // important part
$notification->save()

检索最新通知并显示铃铛

$latest_notification = Notification::where('latest', 1)->first(); // latest
//before responding to view - save notification as 0
$latest_notification->latest = 0;
$latest_notification->save();

if(latest_notification->isNotNull) {
return["latest" => latest_notification]
}else{
return["latest" => 0];
}

前端显示铃

<span id="notifier"></span>

Javascript -- Jquery // 如果你的响应不是 0 那么你有通知 // 向服务器发送请求后 post 或 axios 无论你使用什么

if(response.latest !== 0) {
$('#notifier').html('<i class="fas fa-bell"></i>' + '1')
} else {
$('#notifier').html('0')
}

很抱歉没有时间测试这个,但这肯定会为你指明某个地方,祝你一切顺利。

【讨论】:

  • 谢谢。这非常有用。所以我把最后一段代码放在我网站的前端文件中,那我应该把其他代码放在哪里?
  • 其他代码是 javascript,在您用于网站的 javascript 文件中。 PHP代码在laravel中使用它
  • 我实际上已经用 Vue 编写了我的网站,但它仍然可以工作。我将 PHP 代码放在哪个 Laravel 文件中?
  • 在您的 laravel 控制器文件中,您正在执行将数据添加到数据库的操作
  • 好的,我将前两块代码放到Controller.php文件中。
【解决方案2】:

第一个问题:

是的,您可以像这样为每个用户获取通知:

在你想为每个用户传递通知结果的控制器中

$user = App\User::find(1);
   foreach ($user->unreadNotifications as $notification) {
   echo $notification->type;
}

对于第二个问题,您应该为toArray 函数添加一个值,例如 并且您可以计算通知并在任何您想要的帮助 Ajax 调用或每次刷新 html 页面的标题上显示消息,

在通知文件中

public function toArray($notifiable)
{
    return [
        'sender_id' => $this->user->id,
    ];
}

之后,当您想要获取此数据(查询通知表以查找您发送的通知)时,您可以使用JSON Where Clauses

希望对你有帮助

【讨论】:

  • 非常感谢。我应该把这段代码放在哪里?在我的测试通知中?
  • 您指的是哪个示例代码?第一个还是第二个?
  • 好吧,两者兼得。
  • 观看本教程,它将帮助您在 laravel 中创建通知。它将涵盖您的第一个问题。 Notification in Laravel
  • 我已经为你的问题编辑了我的答案:我应该把这段代码放在哪里?
猜你喜欢
  • 2013-07-21
  • 2023-04-09
  • 2010-12-25
  • 1970-01-01
  • 2012-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多