gpt4 book ai didi

php - beforeSave 与 Yii2 中的更新操作相同

转载 作者:可可西里 更新时间:2023-11-01 00:40:25 25 4
gpt4 key购买 nike

为什么 yii2 识别 actionUpdate 是同一个 actionCreate。为什么我这样说:是这样的

我有很多字段,例如 name, created_by,在 db 中有一个特殊字段,我想 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 变量实际上告诉您这是创建还是更新操作。这是 bool 值,如果正在插入模型则为 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;
}

关于php - beforeSave 与 Yii2 中的更新操作相同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41606611/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com