Reputation: 170
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
Reputation: 113
Ex. create new model class "AnotherOrderItems" then extend OrderItems;
$orderItems1 = new OrderItems();
$orderItems2 = new AnotherOrderItems();
Upvotes: 0
Reputation: 341
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