关联论坛与帖子时出现Trying to get property of non-object错误求助
解决帖子关联论坛时的 "Trying to get property of non-object" 错误
嘿,我来帮你拆解这个问题!从错误堆栈里能一眼看到核心问题:forum 变量是 null —— 也就是说你要关联帖子的那个论坛对象根本没查到,之后你又试图去访问这个空对象的属性,才触发了这个报错。
下面是几个最可能的原因和对应的解决办法:
传入的
forum_id对应的论坛不存在
你这次传的forum_id是soccer,先去数据库的论坛表里核对下:有没有slug或者ID正好是soccer的记录?要注意拼写、大小写完全匹配,别是Soccer或者soccer_news这种相似但不一样的值。查找论坛的代码逻辑出错
打开ThreadController.php看看第51行附近的代码,是不是查找论坛的方式不对?举个例子:如果soccer是论坛的slug(不是主键ID),但你用了Forum::find($forum_id)来查找,那肯定会返回null——因为find()是按主键ID查的。这时候应该改成Forum::where('slug', $forum_id)->first()。没提前处理
forum为空的情况
就算查询逻辑没问题,也可能遇到论坛被删除这种边界情况。所以在关联帖子之前,一定要先判断forum是否存在,比如:// 先检查论坛是否存在,不存在就直接返回404 if (!$forum) { abort(404, '指定的论坛不存在,请检查ID是否正确'); } // 再执行帖子关联逻辑,比如 $thread->forum()->associate($forum);
如果想更省心,也可以用Laravel的firstOrFail()方法,它找不到记录时会直接抛出404异常,避免后续代码访问空对象:
$forum = Forum::where('slug', $forum_id)->firstOrFail(); // 之后直接用$forum关联帖子就行,不用担心null的问题
内容的提问来源于stack exchange,提问作者detinu20
相关产品推荐
相关产品推荐

