假设$post
是Post
的雄辩模型,并且有许多Comment
相关的模型。
这是帖子模型:
/**
* Get comments.
*/
public function comments()
{
return $this->hasMany('App\Models\Comment');
}
我正在尝试通过其id
检索属于该帖子的评论。如果存在评论,则运行以下代码将返回评论,但如果该评论属于该帖子(关系),则不会考虑。即使用户不在当前帖子中,这也可以使用户检索评论。
$comment = $post->comments()->findOrFail($commentId);
以下内容首先返回一个集合,然后通过id
找到正确的注释。
$comment = $post->comments->find($commentId);
但是,我需要通过查询生成器的findOrFail()
方法而不是集合上的find()
方法来返回异常,而不是在尝试访问的属性时获取undefined error
评论。
答案 0 :(得分:0)
您可以这样做:
// get Post:
// $post = Post::find($postId);
// get the comment.
$comments = $post->comments()->where('id', $commentId)->get(); // If they are many.
// $comment = $post->comments()->where('id', $commentId)->first(); // If just one.
if (empty($comments)) // 'if($comment)' in case it is just one.
{
abort(404, 'The comments does not exist.');
}
return view('some.view')->withComments($comments);
然后在您的视图中使用$comments
。
尝试一下:
$post->load('comments', function ($query) use ($commentId) {
$query->findOrFail($commentId);
});
然后:
return view('some.view')->withComments($post->comments);
答案 1 :(得分:0)
尝试更换
message->InitializationErrorString()
使用
$comment = $post->comments()->findOrFail($commentId);
但是,我认为您的注释ID是唯一的,并且无论您是通过透视表还是直接访问它都无所谓...