villiwalla
@villiwalla
HTML-верстка

Выборка из декомпенсированной таблицы?

Есть таблица с комментариями, имеет поля (вывод комментов в 2-уровня):
ID | PARENT_ID (default NULL)| TOPIC_ID | .....

Модель топика:
class Topic {
 ....
 public function getComments() {
   return $this->hasMany(Comments::className(), ['id' => 'topic_id']);
 }
}


Модель коментов:
class Comments {
....
public function getAnswer() {
return self::find()->where(['parent_id' => $this->id])->all();
}
}

Во вьюхе:
<? foreach($model->comments as $comment): ?>
 <div class="comment"><?= $comments->content  ?></div>

 <? if(!empty($comments->answer)): ?>

  <? foreach($comments->answer as $answer): ?>
    <div class="answer"><?= $answer->content ?></div>
  <? endforeach; ?>

 <? endif;?>

<? endforeach;>


При текущем getAnswer() почему то возвращает только 1 запись ответа на комментарий, хотя в некоторых случаях их более 1, почему так? И можно ли связать таблицу? Типа:
public function getAnswer() {
   return $this->hasMany(self::className(), ['id' => 'parent_id'])->where(['parent_id' => $this->id])->all();
 }
  • Вопрос задан
  • 48 просмотров
Пригласить эксперта
Ответы на вопрос 1
kimono
@kimono
Web developer
Думаю, лучше сделать так:
class Comments {
  /**
  * Ответы - это комментарии, у которых наш является родительским
  */
  public function getAnswers() {
    return $this->hasMany(self::className(), ['parent_id' => 'id']);
  }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы