laravel中的Database Notifications
2018-06-22 05:11:00来源:未知 阅读 ()
创建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(); });
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 详解php中的implements 使用 2020-03-18
- php 中的closure用法详解 2020-03-13
- laravel实现批量更新多条记录的方法示例 2020-02-19
- Laravel中七个非常有用但很少人知道的Carbon方法 2020-02-15
- Laravel如何使用数据库事务及捕获事务失败后的异常详解 2020-02-08
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash