为什么yii2标识actionUpdate是相同的actionCreate。我为什么这么说:情况就是这样
我有很多字段,例如name, created_by
想在数据库中使用一个特殊字段,要auto_increment(但不能使用主键)。该字段被命名nomor_surat
(英文:letter_number)
因此,如果要插入的新记录no_surat
将是1,2,3,4,依此类推。然后我决定像这样创建动作beforeSave():
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
请指教。
$insert
变量实际上是在告诉您这是创建还是更新操作。这是布尔值,即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; }