einfache afterSave-Methode funktioniert nicht in Yii

Möchte ich ein Feld aktualisieren, die in eingefügt raw afterSave Methode,so entwickle ich folgenden code im Treiber-Modell

protected function afterSave() {
        parent::afterSave();
        if ($this->isNewRecord) {
            $newid = self::newid($this->id);
            $this->updateByPk($this->id, new CDbCriteria(array('condition'=>'driverid = :driverid', 'params'=>array('driverid'=>  $newid))));
        }
}

und im Controller die Methode, die crud aus:

public function actionCreate()
{
    $model=new Driver;

    //Uncomment the following line if AJAX validation is needed
    //$this->performAjaxValidation($model);

    if(isset($_POST['Driver']))
    {
        $model->attributes=$_POST['Driver'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}

, warum nach dem speichern nicht funktioniert?

edit:

    private static function CheckNumber($number) {
        $array = array(10);
        for ($i = 0; $i < 10; $i++)
            $array[$i] = 0;
        do {
            $array[$number % 10]++;
            $number /= 10;
        } while ((int) ($number / 10 ) != 0);
        $array[$number]++;

        for ($i = 0; $i < 10; $i++)
            if ($array[$i] > 1)
                return false;
        return true;
    }

public static function newid($id) {
    while (self::CheckNumber($id) == FALSE) {
        $id++;
    }
    return $id;
}
Bitte zeigen Sie selbst::newid-Methode

InformationsquelleAutor Moein Hosseini | 2012-08-29

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.