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的包或者类库.另外在某一项目中,我们也可能会创建某一类库,而且可 ...
随机推荐
- 【Xilinx-LVDS读写功能实现】-00-开始
最近用到了一款LVDS接口的摄像头,640*480灰度图像,数据速率为600Mbps,位宽10bit,DDR双边沿采样. 实现数据的采集需要用到FPGA内的SERDES模块,现在已经仿真通过了,等到上 ...
- contextMenu,右键菜单
<!DOCTYPE html> <html> <head> <title>ContextMenu Event Example</title> ...
- mysql 子查询优化
今天用到要查询七天内都没有装机的门店信息,首先想到了用not in,先把装机的userid查出来,然后再id not in,但是这样就必须使用子查询,数据量少还可以,数据量大了的话,肯定效率特别低,因 ...
- YII 1.0 小功能总结
1.操作成功提示 只能使用一次,getFlash()取值以后,值就删除了 控制器中: Yii::app()->user->setFlash('success','修改成功'); 视图中: ...
- Hibernate懒加载的三种解决方案
Hibernate懒加载的两种解决方案: 1.Hibernate.initialize(代理对象) 2.在*.hbm.xml映射文件中添加lazy="false"属性 3.使用op ...
- Win10下CISCO VPN Client无法安装解决方案
Cisco vpn client 在Windows升级到Windows 10 之后无法正常安装使用,在这种情况下:1.先安装Dell SonicWALL Global VPN Client(GVCSe ...
- 安装Pomelo
安装pomelo的过程中会使用到C++编译器. 请确保你的Windows系统满足以下两个条件: python(2.5<version<3.0). VC++ 编译器,包含在Visual St ...
- Oracle job调用存储过程
在PL/SQL中的what值中直接写入存储过程的名称+“分号”: begin sys.dbms_job.submit(job => :job, what => 'del_ky_items; ...
- Java泛型中的通配符的使用
package com.srie.testjava; import java.util.ArrayList; import java.util.List; public class TestClass ...
- 手机APP测试思路及测试要点
一 手机APP测试基本思路: 测试计划--测试方案--测试用例--执行: 很多小公司都没有具体的需求,项目时间也比较紧,而且流程也不是很严谨,在这样的情况之下,作为测试的我们,该怎样去对项目进行用例 ...