簡體   English   中英

使用yii x-editable更新兩個模型

[英]Update two models using yii x-editable

因此,我正在使用此擴展名: yii的x-editable

而且我目前正在嘗試更新update()函數中的兩個模型。

我有兩個模型:

Realisasi.php

RealisasiDeadline.php

所以,當一個細胞上表Realisasi.php更新(在這種情況下,列t1701一個值),我想要的功能更新表RealisasiDeadlinet1701相應的值,使用列中沒有為外鍵。

由於我還沒有在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一樣。

在原始功能上添加了一些注釋,以便您可以對其進行改進。 這段代碼最大的問題是,看着它我不知道它做什么。

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模型或某些行為或事件阻止其更新引起的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM