topics 表的 reply_count 都为 0,删除时会报错

topics表中的reply_count默认为0,所以表中的reply_count的value都为0,在执行删除的时候就会出现这种错误,虽然不影响结果,但是还是说一下吧
file

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
讨论数量: 6
liyu001989

是因为测试数据的问题吧,topic 的 seed 没有填充上 reply_count。重新创建一个帖子进行回复和删除应该没问题

7年前 评论

$table->integer('reply_count')->unsigned()->default(0);

@liyu001989 是的,填充数据都是默认填充的0,所以才会有那种错误,重新创建帖子就不会有问题了

7年前 评论
liyu001989

ok 有空了我修复一下 seed

7年前 评论

@liyu001989 如你所说:新创建一个帖子进行回复和删除没问题,
如:
file

file

但是删除默认的,
如:
file
需然出错:
file
但是还是能够删除:

file
还是想请教一些seed 该如何修复?

6年前 评论
ruodee

先在app/Observers/ReplyObserver.php的deleted方法中增加一个判断:

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

先保证不出错
然后,Topic的reply_count仅在数据填充时有问题,最好的方法是再增加一个TopicReplyCountSeeder,在ReplySeeder之后调用。
TopicReplyCountSeeder用来将对Reply填充的数据统计后,更新Topic的reply_count,最后写入数据库。这是我的思路。

6年前 评论

@liyu001989 这个真的是需要修复下了

6年前 评论

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