码迷,mamicode.com
首页 > 数据库 > 详细

laravel中的Database Notifications

时间:2017-03-02 15:24:28      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:添加   记录   member   --   设置   创建   auth   sch   方法   

创建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

标签:添加   记录   member   --   设置   创建   auth   sch   方法   

原文地址:http://www.cnblogs.com/webph/p/6490550.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!