在Yii2中,beforeSave在更新操作上是相同的

时间:2017-01-12 06:37:40

标签: php yii2

为什么yii2识别actionUpdate是同一actionCreate。 为什么我这样说: 就是这种情况

我有很多字段,例如name, created_by,在db中有一个特殊字段,我想要auto_increment(但不是主键)。 该字段名为nomor_surat(英文:letter_number)

因此,如果要插入的新记录,no_surat将是1,2,3,4,依此类推。 然后我决定像之前那样在之前创建动作:

public function beforeSave($insert) {
    parent::beforeSave($insert);

    $nomor = Request::find()->select('max(nomor_surat) as max')->scalar();
    $this->nomor_surat = $nomor + 1;

    return parent::beforeSave($insert);
}

在actionCreate中,它的成功。 让我们说no_surat = 1

但是,如果我更新no_surat_1,请说我想在此记录中命名, no_suart是change = 2

请告知。

1 个答案:

答案 0 :(得分:4)

true变量实际上是告诉您这是创建还是更新操作。这是布尔值,如果插入模型则为false,如果正在更新模型,则为public function beforeSave($insert) { if (parent::beforeSave($insert)) { if ($insert) { // only on insert $nomor = Request::find()->select('max(nomor_surat) as max')->scalar(); $this->nomor_surat = $nomor + 1; } return true; } return false; }

您在示例中使用了错误的逻辑。它应该是:

google.maps.event.clearListeners(scope.map, 'zoom_changed');

google.maps.event.addListener(scope.map, 'zoom_changed', function() {
  //if (scope.zoomFlag === "user") {
  //    var zoomLevel = scope.map.getZoom();
  //    scope.mapType = getMapType(zoomLevel);
  //    scope.getEvents();
  //}

});