使用相同模型的多个实例可以在yii2中保存重复数据

时间:2015-02-22 10:35:17

标签: php yii2 yii2-advanced-app

我正在尝试使用表单数据保存同一模型的多个实例。但是这两个实例都保存了重复数据,即第二个实例的e值。这是我的控制器代码,

    $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]);
    }

第一个实例总是被第二个实例值替换。

表单字段示例是,

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

我该怎么办才能将第一个值替换为第二个值?

2 个答案:

答案 0 :(得分:1)

在视图中应该是:

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

接下来使用Model :: loadMultiple和Model :: validateMultiple

文档:http://www.yiiframework.com/doc-2.0/guide-input-tabular-input.html

答案 1 :(得分:0)

实施例。创建新的模型类“AnotherOrderItems”然后扩展OrderItems;

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