У меня есть две связанные модели в hasToMany отношение. Первый - Invoices
, а второй - InvoiceItems
. В процессе прототипа, я пытаюсь спрягать две модели через update
зрения InvoicesController
используя следующий код в actionUpdate
из InvoicesController
:Yii2 обновление двух связанных моделей не показывает данные второго
...
use common\models\Invoices;
use common\models\InvoicesSearch;
use common\models\InvoiceItems;
...
public function actionUpdate($id)
{
$model = $this->findModel($id);
$invoiceItems = new InvoiceItems();
if ($model->load(Yii::$app->request->post()) && $model->save()) {
$invoiceItems->invoice_id = $model->id;
if ($invoiceItems->load(Yii::$app->request->post()) && $invoiceItems->save()){
return $this->redirect(['view', 'id' => $model->id]);
}
else{
// return false;
}
} else {
$invoiceItems->invoice_id = $model->id;
return $this->render('update', [
'model' => $model,
'invoiceItems' => $invoiceItems,
]);
}
}
Следующая в update
зрения:
<div class="invoices-update">
<h1><?= Html::encode($this->title) ?></h1>
<?= $this->render('_form', [
'model' => $model,
'invoiceItems' => $invoiceItems,
]) ?>
</div>
Наконец, следующее: _form
вид:
<div class="invoices-form">
<?php $form = ActiveForm::begin(); ?>
<?= $form->field($model, 'created')->textInput() ?>
<?= $form->field($model, 'type')->textInput(['maxlength' => true]) ?>
<hr />
<?= $form->field($invoiceItems, 'item_id')->textInput();?>
<?= $form->field($invoiceItems, 'unit_id')->textInput();?>
<?= $form->field($invoiceItems, 'qty')->textInput();?>
<div class="form-group">
<?= Html::submitButton($model->isNewRecord ? Yii::t('app', 'Create') : Yii::t('app', 'Update'), ['class' => $model->isNewRecord ? 'btn btn-success' : 'btn btn-primary']) ?>
</div>
<?php ActiveForm::end(); ?>
</div>
В приведенном выше коде удалось сохранить данные в таблице invoice_items
. Однако, форма представления обновления имеет пустые поля для модели InvoiceItems
. i. item_id
, unit_id
и qty
после сохранения сохраняются в форме обновления.
Примечание: Это исходный код, то есть я буду работать позже, чтобы добавить много элементов в счет-фактуру, но теперь я просто попытаюсь иметь один элемент, связанный с фактурой.
Ну! Что мне нужно сделать, чтобы заполнить его данными? – SaidbakR
Когда я пытаюсь '$ invoiceItems = $ model-> getInvoiceItems();' он возвращает ошибку: 'Вызов неизвестного метода: common \ models \ InvoiceItemsQuery :: formName()' – SaidbakR
Вам нужна правильная findModel ... У меня есть обновить ответ ... – scaisEdge