@faradeifrontend
Использую пробелы для отступов ;)

Yii как реализуются отзывы (комменты) для отдельной записи?

Есть страничка на ней выводится товар, форма с полями Имя Емел Текст для отправки отзыва.
Ну и внизу они типо выводятся.

6261a1cfd4496200769630.png
Но если зайти на другой товар, там тоже все эти комменты присутсвуют.
Хотелось бы чтобы на каждой странице были уникальные отзывы. Что для этого нужно?
  • Вопрос задан
  • 107 просмотров
Решения вопроса 1
@faradeifrontend Автор вопроса
Использую пробелы для отступов ;)
Решил, добавив новое поле computer_id в таблицу отзывов.
И в контроллере $review->computer_id = $id;
$comments = Review::find()->where(['computer_id' => $id]);


Полный actionIndex
spoiler
public function actionIndex($id)
	{

		$model = new ReviewForm();

		if ($model->load(Yii::$app->request->post())) {
			if ($model->validate()) {
				$review = new Review();
				$review->setAttributes($model->getAttributes());
				$review->computer_id = $id;
				$review->save(false);

				Yii::$app->session->setFlash('success', 'Данные приняты');
				return $this->refresh();
			} else {
				Yii::$app->session->setFlash('error', 'Ошибка');
			}
		}

		$comments = Review::find()
			->where(['computer_id' => $id]);

		$pagination = new Pagination([
			'defaultPageSize' => 5,
			'totalCount' => $comments->count(),
		]);

		$comments = $comments->orderBy('id Desc')
			->offset($pagination->offset)
			->limit($pagination->limit)
			->all();

		$computers = addComputer::findOne($id);

		return $this->render('index', compact('model', 'comments', 'pagination', 'computers'));
	}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
vitaly_74
@vitaly_74
исходя из ваших пояснений, могу предположить что вы откуда то берете $comments
это наверное какой то запрос в бд.
а нужно так:
$computer = addComputer::find()->where(['id'=>$idNumber])->one() //ужасно названный класс
$comments = $computer->comments;
//далее используйте тот код что вышe

и в самом классе addComputer нужно добавить прмиерно следующее:
public function getComments(){
 return $this->hasMany(TableComments::class, ['computer_id'=>'id']);
}

документация
Ответ написан
Ваш ответ на вопрос

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

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