Как получить список всех пользователей, кто писал комментарий к статье?

Как получить список всех пользователей, кто писал комментарий к статье?
Сейчас реализовано вот так:
$list = Comment::where('article_id', 1)->get()->load('user');
$users = $list->map(function($list){
     return $list->user;
})->unique();

Но думаю способ который более оптимизирован?
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
@windsteppy
Trainee разработчик
Для начала - структура базы данных:
Comment (article_id, id, text, user_id)
Article (id, text, user_id)
User (id, name)


Теперь модели:
Article.php
public function comments(){
return $this->hasMany(Comment::class);
}
public function author(){
return $this->belongsTo(User::class);
}
public function commetators(){
return $this->hasManyThrough(User::class, Comment::class);

Comment.php
public function article(){
return $this->belongsTo(Article::class);
}
public function user(){
return $this->belongsTo(User::class);
}


Код для поиска всех пользователей, кто писал комментарии к статье.
$users = Article::find(1)->commentators;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы