Обновите две модели с помощью yii x-editable

Итак, я использую это расширение: x-editable для yii.

И в настоящее время я пытаюсь обновить две модели в функции update().

У меня есть две модели:

Realisasi.php

RealisasiDeadline.php.

Поэтому, когда ячейка обновляется в таблице Realisasi.php (в данном случае одно значение в столбце t1701), я хочу, чтобы функция обновляла соответствующее значение в столбце t1701 таблицы RealisasiDeadline, используя столбец no в качестве внешнего ключ.

Поскольку я не нашел ни одного примера в Google, я сделал это сам:

public function actionSimpanEdit($kode) {
    Yii::import('editable.EditableSaver');
    $es = new EditableSaver($_GET['model']);  // 'modelName' is classname of model to be updated
    $es->update();

    $es2 = RealisasiDeadline::model()->findByPk($kode);//this is where I'm stuck
    $es2['t1701'] = '1991-11-19';//this too
    $es->update();//and this
}

Это view.php:

array(
        'name' => 't1701',
        'value' => 'CHtml::value($data,"hubtarget.t1701")=== "0"?"Target Nol":$data->t1701',
        'header' => 'Bkl Selatan',
        'class' => 'editable.EditableColumn',
        'editable' => array(
            'url' => $this->createUrl('simpanEdit', array('model' => 'Realisasi', 'kode'=>'$data->no')),
        )
    ),

Что я пропустил? Можно ли вообще сделать? Если нет, есть ли другое решение?

ОБНОВЛЕНИЕ Никаких ошибок не отображается. Но значение в таблице RealisasiDeadline не меняется, меняется только значение в Realisasi.


person Safira    schedule 24.08.2016    source источник


Ответы (1)


Добавлены некоторые комментарии к исходной функции, чтобы вы могли ее улучшить. Самая большая проблема с этим кодом заключается в том, что, глядя на него, я понятия не имею, что он делает.

public function actionSimpanEdit($kode) {
        Yii::import('editable.EditableSaver'); // Should be at the top of the file
        // For the love of god use descriptive variable names
        $es = new EditableSaver($_GET['model']); // Would prefer to have model as actions argument
        $es->update();

        $es2 = RealisasiDeadline::model()->findByPk($kode); // no idea what this model is responsible for
        $es2['t1701'] = '1991-11-19'; // no idea what attribute t1701 is, use descriptive names
        $es->update();
    }

Я немного реорганизовал его. До сих пор не знаю, что он делает ;/

public function actionSimpanEdit($id, $model) {
        $editableSaver = new EditableSaver($model);
        $editableSaver->update();

        $deadline = RealisasiDeadline::model()->findByPk($id);

        if($deadline instanceof RealisasiDeadline) {
            $deadline->t1701 = '1991-11-19';
            if(!$deadline->update()) {
                // something went wrong
            }
        } else {
            // not found
        }
    }

Возвращаясь к вашей проблеме. Вероятно, это вызвано тем, что модель RealisasiDeadline не найдена, или какое-то поведение или событие препятствует ее обновлению.

person xReprisal    schedule 25.08.2016