Sid
Sid

Reputation: 170

Using multiple instances of same model saves duplicate data in yii2

I am trying to save multiple instances of same model using form data. But both the instances save duplicate data, i,e value for the 2nd instance. Here is my controller code,

    $purchaseorder = new Purchaseorder();
    $orderItems1 = new OrderItems();
    $orderItems2 = new OrderItems();
    if ($purchaseorder->load(Yii::$app->request->post()) && $orderItems1->load(Yii::$app->request->post()) && $orderItems2->load(Yii::$app->request->post())) {
          $purchaseorder->save();
          $orderItems1->purchaseorder_id = $purchaseorder->purchaseorder_id;
          $orderItems1->save();      
          $orderItems2->purchaseorder_id = $purchaseorder->purchaseorder_id;
          $orderItems2->save();      
          return $this->redirect(['view', 'id' => $purchaseorder->purchaseorder_id]);
    }

1st instance is always being replaced by 2nd instance values.

Form field examples are,

<?= $form->field($orderItems1, 'ordered_item')->textInput() ?>
<?= $form->field($orderItems2, 'ordered_item')->textInput() ?>

What should I do so that 1st value wont be replaced by 2nd value?

Upvotes: 0

Views: 1393

Answers (2)

yoshi
yoshi

Reputation: 113

Ex. create new model class "AnotherOrderItems" then extend OrderItems;

$orderItems1 = new OrderItems();
$orderItems2 = new AnotherOrderItems();

Upvotes: 0

In the view it should be :

<?= $form->field($orderItems1, '[]ordered_item')->textInput() ?>
<?= $form->field($orderItems2, '[]ordered_item')->textInput() ?>

And next use Model::loadMultiple and Model::validateMultiple

The documentation : http://www.yiiframework.com/doc-2.0/guide-input-tabular-input.html

Upvotes: 1

Related Questions