@AlexAll

Почему в yii2 в контролере в поле куда записывается id через цикл, модель сохранение выдает ошибку что это массив?

Вот такой контроле, почему то эта строчка $item->order_id = $model->id; выдает при сохранении ошибку что это array, хотя если вардампить $item->order_id или $model->id выдает обычное число int

Вот контролер

public function actionOrder() {

        $model = new Order();
        $item = new OrderItem();
        $cart = $this->service->getCart();
        if ($model->load(Yii::$app->request->post())) {
            $model->status = 'on';
            if ($model->save()) {
                $items = $this->cart->getItems();
                foreach ($items as $product) {
                    $item->order_id = $model->id;
                    $item->item_id = $product->getProductId();
                    $item->quantity = $product->getQuantity();
                    $item->item_price = $product->getCost();
                      if(!$item->save()){
                        var_dump($item->errors);
                        die;
                    }
                }

            }
        }
        return $this->redirect(['index']);
    }


Что не так? всю голову сломал, в других контролерах такой способ применял, при сохранении картинок в отдельной базе и все ок
  • Вопрос задан
  • 114 просмотров
Пригласить эксперта
Ответы на вопрос 2
slo_nik
@slo_nik Куратор тега Yii
Добрый день.
Может так будет правильней?
foreach ($items as $product) {
                    $item = new OrderItem();
                    $item->order_id = $model->id;
                    $item->item_id = $product->getProductId();
                    $item->quantity = $product->getQuantity();
                    $item->item_price = $product->getCost();
                      if(!$item->save()){
                        var_dump($item->errors);
                        die;
                    }
                }

И не мешало бы показать полный текст ошибки.
Ответ написан
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Для начала надо бы вместо
foreach ($items as $product) {
                    $item->order_id = $model->id;

сделать
foreach ($items as $product) {
                    $item = new OrderItem();
                    $item->order_id = $model->id;

так как вы одну и туже модель перезаписываете, ну и дайте код самой модели OrderItem и что выдает var_dump
Ответ написан
Ваш ответ на вопрос

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

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