减去话题回复数需要加个 reply_count 是否为 0 的判断?


public function deleted(Reply $reply)
{
        if ($reply->topic->reply_count > 0) {
            $reply->topic->decrement('reply_count', 1);
        }
}

否则容易报错:


Illuminate \ Database \ QueryException (22003)
SQLSTATE[22003]: Numeric value out of range: 1690 BIGINT UNSIGNED value is out of range in '(`larabbs`.`topics`.`reply_count` - 1)' (SQL: update `topics` set `reply_count` = `reply_count` - 1, `updated_at` = 2018-06-08 16:39:14 where `id` = 63)

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
Summer
最佳答案

:+1: 好主意

7年前 评论
讨论数量: 6
Summer

:+1: 好主意

7年前 评论

回头操作后还真有 :+1:

app/Observers/ReplyObserver.php

file

7年前 评论
ruodee

这小BUG的产生和数据填充有关吧?没有填充数据,reply_count不会减到小于0。

7年前 评论

理论上其实是不需要检查的,只是因填充数据的时候没有吧对应的回复数+1导致的这个bug

6年前 评论

计算 数据条数就好了

5年前 评论
宋高峰 5年前

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