В чем ошибка при вигрузке файлов?

Ошибка простая, но я как-то не пойму)
Отсутствуют обязательные параметры: id
public function actionCreate()
    {
        $model = new Advertisement();

        if ($model->load(Yii::$app->request->post())) {
            $imagesArray = UploadedFile::getInstances($model, 'image');
            foreach ($imagesArray as $file) {
                $name = \Yii::$app->security->generateRandomString(7).'.jpg';
                $file->saveAs(Url::to('@common/files/advertisement/' . $name));
                $add = new Advertisement_Image();
                $add->advertisement_id = $model->id;
                $add->image = $name;
                $add->save();
            }
            $model->author = Yii::$app->user->id;
            $model->save();

            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('create', [
                'model' => $model,
            ]);
        }
    }
  • Вопрос задан
  • 308 просмотров
Пригласить эксперта
Ответы на вопрос 1
vakorovin
@vakorovin
Разработчик
Добрый день. Прочтите свой код по порядку.
Создали новый объект класса Advertisement, загрузили в него POST-параметры и далее, еще НЕ СОХРАНИВ , пробежались в цикле по файлам и каждому объекту Advertisement_Image прописали в advertisement_id "$model->id", а откуда возьмется id у модели до ее сохранения в БД? В этом и проблема. Связанные файлы сохраняйте после сохранения $model.

И еще пара рекомендаций: пробегитесь по www.php-fig.org/psr, лишним не будет (стилистика кода). Складывали бы файлы не в common, а в frontend.
Ответ написан
Ваш ответ на вопрос

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

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