在$ model-> save()之后,当我点击更新项目图标时,yii2没有获得id

时间:2017-05-04 14:29:46

标签: yii2

我有一个yii2项目,我正在我的windows localhost上开发并在linux上远程托管。 在当地(窗户),每件事都是完美的。 在linux上,我在$ nodel-> save()之后有$ model-> id = null,尽管保存了数据。

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

        if ($model->load(Yii::$app->request->post()) && $model->save()) {
            return $this->redirect(['view', 'id' => $model->id]);
        } else {
            return $this->render('create', [
                        'model' => $model,
            ]);
        }
    }

我在保存后尝试过死($ model-> id),它打印为null。

此外,当我点击网格视图中的更新图标时,我遇到了同样的问题。

AppBreakingNews如下:

<?php

namespace app\models\appmodels;

use app\models\BreakingNews;
use yii\behaviors\TimestampBehavior;


class AppBreakingNews extends BreakingNews {

    public function behaviors() {
        return [
            [
                'class' => TimestampBehavior::className(),
                'createdAtAttribute' => 'created_at',
                'updatedAtAttribute' => 'updated_at',
                'value' => date('Y-m-d H:i:s'),
            ],
        ];
    }

}

请注意,appBreakingNews扩展了由yii2生成的模型BreakingNews而没有任何更改。

提前致谢..

1 个答案:

答案 0 :(得分:0)

请尝试保存模型 - &gt;保存(false);因为我认为它可以从模型文件中验证一些东西。

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

    if ($model->load(Yii::$app->request->post()) && $model->save(false)) {
        return $this->redirect(['view', 'id' => $model->id]);
    } else {
        return $this->render('create', [
                    'model' => $model,
        ]);
    }
}

或者您可以在这里打印您的模型文件。