「分享」自己写的标记单条消息为已读

routes/api.php

// 标记单条消息通知为已读
$api->put('user/read/notifications/{notification}', 'NotificationsController@readSingle')
    ->name('api.user.notifications.readSingle');

app/Http/Controllers/Api/NotificationsController.php

    //标记单个消息通知为已读
    public function readSingle(DatabaseNotification $notification)
    {
        $this->user()->decrement('notification_count');
        $notification->markAsRead();
        return $this->response->noContent();
    }

测试:
file

数据库notifications表:
file

日拱一卒
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 2
黑哈尔

@hustnzj
加了个判断,不然未读数为0的话会报sql错误。

file

app\Http\Controllers\Api\NotificationsController.php

    public function readSingle(DatabaseNotification $notification)
    {
        if (!$notification->read_at) {
            $this->user()->decrement('notification_count');
            $notification->markAsRead();
        }
        return $this->response->noContent();
    }
5年前 评论

还需要确认该通知是否属于user,不然会误操作,需要做个权限判断

4年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!