#php #laravel #laravel-blade
Вопрос:
Я использую быструю загрузку для комментариев и ответов в своем блоге. Если комментарий в блоге parent_id
равен нулю, у меня нет никаких проблем с N 1. Однако в тот момент, когда я назначаю комментарий a parent_id
для создания гнезда ответов, это вызывает проблему N 1.
Я пытался разобраться в этой проблеме, и , похоже, она исходит из posts.comments.blade
amp; posts.comments-child.blade
, но я не могу понять, почему. Любая помощь приветствуется.
Модель посткомиссии
public function user()
{
return $this->belongsTo(User::class);
}
public function replies()
{
return $this->hasMany($this, 'parent_id');
}
ПостКонтроллер
$postComments = PostComment::where([
'post_id' => $post->id,
'parent_id' => null
])->with('user', 'replies')->get();
главное.лезвие
@include('posts.comments', ['comments' => $postComments])
posts.comments.blade amp; posts.comments-child.blade
@foreach ($comments as $comment)
<h6>{{ $comment->user->name }}</h6>
<p>{{ $comment->comment }}</p>
<ul>
@include('posts.comments-child', ['comments' => $comment->replies])
</ul>
<hr>
@endforeach
Ответ №1:
Ваша проблема N 1 исходит из <h6>{{ $comment->user->name }}</h6>
ответов
Лучше бы они тоже загрузились
$postComments = PostComment::where([
'post_id' => $post->id,
'parent_id' => null
])->with('user', 'replies.user')->get();
У вас все равно будет проблема, если в ответах будет больше ответов и так далее.