laravel中的Database Notifications
创建Post and User模型
php artisan make:model Post php artisan make:model User
创建posts and users 表文件
php artisan make:migration create_users_table --create=users php artisan make:migration create_users_table --create=posts
在表文件设置表结构
Schema::create('posts', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->timestamps();
});
Schema::create('users', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('email');
$table->string('password');
$table->string('remember_token');
$table->timestamps();
});
生成posts and users and notifications表
php artisan notifications:table php artisan migrate
创建测试数据
先在database/factories/ModelFactoy.php中设置需要的数据类型
$factory->define(App\User::class, function (Faker\Generator $faker) {
static $password;
return [
'name' => $faker->name,
'email' => $faker->unique()->safeEmail,
'password' => $password ?: $password = bcrypt('secret'),
'remember_token' => str_random(10),
];
});
$factory->define(App\Post::class, function (Faker\Generator $faker) {
return [
'name' => $faker->name,
];
});
再执行命令
php artisan tinker
namespace App
factory('App\User',10)->create()
factory('App\Post',10)->create()
创建Notifications目录,以及通知文件
创建之后即可看见InvoicePaid.php and UserSubscrible.php 文件
php artisan make:notification InvoicePaid php artisan make:notification UserSubscrible
Formatting Database Notifications
在 notification class 中可以用 toDatabase or toArray 方法 , 将数据存入到数据库中 ,,同时 这两个方法接受$notifiable entity,并返回一个普通的数组(json 格式)。我的代码如下:
//InvoicPaid
public function toArray($notifiable)
{
return [
'post_id' => $this->id,
];
}
/// UserSubscribe
public function toArray($notifiable)
{
return [
'subscribe_at'=>Carbon::now(),// 记录时间
];
}
设置路由
Auth::LoginUsingId(2);
Route::get('/', function () {
// return view('welcome'); Auth::user()->notify(new \App\Notifications\PostPublised());
Auth::user()->notify(new \App\Notifications\UserSubscribed());
});
刷新时即可看见数据库中插入数据了,同时 read_at 字段为 null
Notification 得数据显示
在welcome.php添加如下代码,以驼峰的形式显示数据:
<h2>未读通知</h2>
<ul>
@foreach(Auth::user()->unreadNotifications as $notification)
{{-- @include('notification.'.snake_case(class_basename($notification->type)))--}} <li>{{snake_case(class_basename($notification->type))}}</li>
@endforeach
</ul>
<form method="post" action="/user/notification" >
{{csrf_field()}}
<button type="submit">提交</button> </form>

新建 /user/notification 路由, 把未读的通知变为已读的 ,及修改 read_at字段的值 , 第二次刷新页面就不会有数据显示 ,同时可以利用这个对应不同的 用户加载不同的模板
\Illuminate\Support\Facades\Route::post('/user/notification',function (){
\Illuminate\Support\Facades\Auth::user()->unreadNotifications->markAsRead();
});
laravel中的Database Notifications的更多相关文章
- 【社交系统研发日记】如何在 Laravel 中 “规范” 的开发验证码发送功能
顺便发个小通知:7月15日ThinkSNS+开源版发布,同时非开源的APP也走出内测阶段,体验二维码也全面发布体验. 什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统 ...
- Laravel 中使用 JWT 认证的 Restful API
Laravel 中使用 JWT 认证的 Restful API 5天前/ 678 / 3 / 更新于 3天前 在此文章中,我们将学习如何使用 JWT 身份验证在 Laravel 中构建 r ...
- 如何在 Laravel 中 “规范” 的开发验证码发送功能
什么是ThinkSNS ? ThinkSNS(简称TS),一款全平台综合性社交系统,为国内外大中小企业和创业者提供社会化软件研发及技术解决方案,目前最新版本为ThinkSNS+(简称TS+).Thin ...
- laravel中的错误与日志
日志 laravel中的日志是基于monolog而封装的.laravel在它上面做了几个事情: 把monolog中的addInfo等函数简化成为了info这样的函数 增加了useFiles和useDa ...
- Laravel 中使用 Redis 数据库
一.前言 Redis 是一个开源高效的键值对存储系统,它通常用作为一个数据结构服务器来存储键值对,它可以支持字符串.散列.列表.集合.有序集合. 1. 安装 predis/predis 在 Larav ...
- Laravel 中缓存驱动的速度比较
缓存是web开发中重要的一部分,我相信很多人和我一样,经常忽略这个问题. 随着工作经验的累积,我已经意识到缓存是多么的重要,这里我通过 Scotch 来解释一下它的重要性. 通过观察发现,Scotch ...
- 在Laravel中使用数据库事务以及捕获事务失败后的异常
Description 在Laravel中要想在数据库事务中运行一组操作,则可以在 DB facade 中使用 transaction 方法.如果在事务的闭包内抛出异常,事务将会被自动还原.如果闭包运 ...
- 深入理解 Laravel 中 config 配置加载原理
Laravel的配置加载其实就是加载config目录下所有文件配置.如何过使用php artisan config:cache则会把加载的配置合并到一个配置文件中,下次请求就不会再去加载config目 ...
- Laravel中使用自己的类库三种方式
虽然Composer使得我们可以重用很多现有的类库(例如packagist.org中的),但是我们仍然可能用到一些不兼容composer的包或者类库.另外在某一项目中,我们也可能会创建某一类库,而且可 ...
随机推荐
- grunt live reload 配置记录
1.npm install --save-dev grunt-contrib-watch 安装 watch 2.安装chrome livereload 插件 3.配置Gruntfile.js wat ...
- spark在集群上运行
1.spark在集群上运行应用的详细过程 (1)用户通过spark-submit脚本提交应用 (2)spark-submit脚本启动驱动器程序,调用用户定义的main()方法 (3)驱动器程序与集群管 ...
- 浅谈tomcat的配置及数据库连接池的配置
1.如何修改tomcat的端口 在某些情况下,可能需要修改tomcat监听的端口8080,比如: a.需要启动两份tomcat服务器 b.某个服务占用了8080端口(1433,1521,3306... ...
- 大数据时代的杀手锏----Tachyon
一.Tachyon系统的简介 Tachyon是一个分布式内存文件系统,可以在集群里以访问内存的速度来访问存在tachyon里的文件.把 Tachyon是架构在最底层的分布式文件存储和上层的各种计算框架 ...
- 以脚本方式直接执行修改密码的passwd命令
以脚本方式直接执行修改密码的passwd命令: 参考: http://bbs.csdn.net/topics/390001865 http://bbs.chinaunix.net/thread-993 ...
- Sublime Text3 高亮显示Jade语法 (Windows 环境)
首先下载git clone https://github.com/miksago/jade-tmbundle.git Jade 然后打开sublime --> 菜单栏 --> Prefer ...
- easyUI panel组件
easyUI panel组件: 属性的使用: <!DOCTYPE html> <html lang="en"> <head> <meta ...
- lufylegend库 鼠标事件 循环事件 键盘事件
lufylegend库 鼠标事件 循环事件 键盘事件 <!DOCTYPE html> <html lang="en"> <head> <m ...
- Docker,容器,虚拟机和红烧肉
Docker火了,有多火你自己看看下面的统计数据就知道了 在发布4个月的时间里,下载量就超过50000次,github上收到超过4000个star,涌现了超过100个贡献者,并且有超过150个项目和超 ...
- node源码详解(五) —— 在main函数之前 —— js和C++的边界,process.binding
本作品采用知识共享署名 4.0 国际许可协议进行许可.转载保留声明头部与原文链接https://luzeshu.com/blog/nodesource5 本博客同步在https://cnodejs.o ...