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

YII2 Как сделать запись в БД в цикле с помощью AR?

Хочу сделать возможность записи списка, для этого принимаемый пост разбиваю на цикл по переносам строк, на пост подаю список:
21e49c19936045c197a6806b40427eb0.JPG
Вот код экшина:
$model = new Word();
        if ( $model->load(Yii::$app->request->post()) ) {
            if( strpos( $model->word_name, "\n" ) ) {  //Если есть переносы строк в посте
                $model->word_name = explode("\n", $model->word_name);  //Разбивает строку на массив
                foreach ($model->word_name as $word_name) {
                    $model->word_name = trim($word_name);
                    echo "<pre>";
                    echo "word_name: ";
                    var_dump($model->word_name);
                    echo "projekt_id: ";
                    var_dump($model->projekt_id);
                    echo "group_id: ";
                    var_dump($model->group_id);
                    echo "status_id: ";
                    var_dump($model->status_id);
                    echo "<pre>";
                    $model->save(); // Делаем запись в цилке
                }
            } else {
                $model->save();
                return $this->redirect(['view', 'id' => $model->id]);
            }
        }

Результат работы кода такой:
word_name: string(25) "Новый запрос 1"
projekt_id: string(1) "2"
group_id: string(1) "3"
status_id: string(1) "1"
word_name: string(25) "Новый запрос 2"
projekt_id: string(1) "2"
group_id: string(1) "3"
status_id: string(1) "1"
word_name: string(25) "Новый запрос 3"
projekt_id: string(1) "2"
group_id: string(1) "3"
status_id: string(1) "1"

Собственно то что и хотел, но в базу заносится только последняя запись из списка, почему так происходит? и как собственно сделать все записи?
  • Вопрос задан
  • 1091 просмотр
Подписаться 1 Оценить Комментировать
Решения вопроса 1
R0dger
@R0dger
Laravel/Yii/2 AngularJs PHP RESTful API
У вас все время одна и таже модель... если делаете в цикле и это новая то создавайте ее.. если не новая, то получайте через запрос, а ввобще AR в цикле - не самая хорошая практика.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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