为什么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);
}
Run Code Online (Sandbox Code Playgroud)
在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;
}
Run Code Online (Sandbox Code Playgroud)