我有一个评论和帖子模型如下:
备注模型关系:
public function commentable(): MorphTo
{
return $this->morphTo();
}
后模型关系:
public function comments(): MorphMany
{
return $this->morphMany(Comment::class, 'commentable')->notReply();
}
我试着通过它评论得到一个帖子:
$comments = Comment::blog()->with('commentable')->latest()->paginate(50);
到目前为止没有问题,但是当我想在@foreach
循环中回显刀片上的commentable->title
时,它返回Attempt to read property "title" on null
。但是当我使用dd($comment->commentable->title)
时,它返回post title,
@foreach($comments as $key=> $comment)
{{ dd($comment->commentable->title) }} // returns post title
{{ $comment->commentable->title }} // returns Attempt to read property "title" on null
@endforeach
我尝试在Comment模型中使用方法:
public function postTitle(): ?string
{
return $this->commentable->title;
}
但是它在echo上再次返回问题,并在dd()
上返回标题
已解决:
有一个softDeleted评论后.当我试图回显评论,它返回错误.如果你正面临这个问题,不要忘记检查你的数据库数据:))
1条答案
按热度按时间gab6jxml1#
一旦你使用
dd()
,它就像dump()
和die()
一样工作,问题是当你试图在循环中检查dd()
的值时,它只会转储第一个值并中断循环,因为die()
。在你的例子中,可能有一个
$comment
没有相关的commetable
,所以当你循环到$comment
时,它将从$comment->commetable
获得一个null,当你试图从null访问一个属性title
时,你将获得Exception
。对于简单的验证,您可以尝试: