Задать вопрос
@bfreedom

Yii2. Как обновить много строк в БД?

Добрый день. Столкнулся с такой проблемой:

Например есть такой action для редактирования списка
public function actionEdit($id, $type) {
         //Получаю много строк для редактирования
         $model = Data::find()
                  ->where(['type' => $type])
                  ->all();
         if($this->request->isPost) {
         //Обновление строк
         }
         return $this->render('edit', ['model' => $model]);
}


Во view:
<?php 
          $form = ActiveForm::begin([]);
          foreach($model as $data) {
                    $form->field($data, 'value')->textInput();
          }
          Html::submitButton('Сохранить', ['class' => 'btn btn-success']);
          ActiveForm::end();


Но в POST получаю только последнюю строку. Насколько я понимаю, у меня ошибка в объявлении поля формы. Скорее всего ответ очень простой, но я никак не могу понять. Нужно получить POST массивом? Потом как их массово присвоить к строкам таблицы в базе данных? Спасибо.
  • Вопрос задан
  • 194 просмотра
Подписаться 1 Простой 2 комментария
Пригласить эксперта
Ответы на вопрос 1
@PiloTeZ
...
У вас ключ в field одинаковый, поэтому и возвращается только последнее значение.
В качестве ключа я предполагаю должен быть $data->type или что-нибудь типа того

<?php 
          $form = ActiveForm::begin([]);
          foreach($model as $data) {
                    $form->field($data, 'value[]')->textInput();
          }
          Html::submitButton('Сохранить', ['class' => 'btn btn-success']);
          ActiveForm::end();
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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