С помощью $model->isNewRecord
вы можете проверить, будет ли модель сохранена или обновлена.С ($model->save() || $model->delete())
вы не можете напрямую определить, что произошло.Если $model->save()
не удалось, то из-за ошибок проверки.$model->delete()
будет называться.Это будет 1 (т. Е. Истина), если удаление прошло успешно.
Я не знаю, почему у вас есть это утверждение, но если вы по какой-то причине не можете его изменить и хотите знать, что происходит, вы можете использовать events :
$model->on(yii\db\BaseActiveRecord::EVENT_AFTER_INSERT, function(yii\db\AfterSaveEvent $e) {
// model was inserted
});
$model->on(yii\db\BaseActiveRecord::EVENT_AFTER_UPDATE, function(yii\db\AfterSaveEvent $e) {
// model was updated
});
$model->on(yii\db\BaseActiveRecord::EVENT_AFTER_DELETE, function(yii\base\Event $e) {
// model was deleted
});
Если вы можете расширить класс модели, вы можете перезаписать соответствующие методы вместо того, чтобы присоединять обработчики событий.Затем вы можете создать промежуточный класс, который отвечает за то, что вам нужно сделать, и позволить извлечь любые модельные классы из этого промежуточного класса:
class ExtendedActiveRecord extends yii\db\ActiveRecord {
public function afterSave($insert, $changedAttributes) {
// Do anything you want
if($insert)
// model was inserted
else
// model was deleted
parent::afterSave($insert, $changedAttributes);
}
public function afterDelete() {
// Do anything you want
parent::afterDelete();
}
}
class ModelA extends ExtendedActiveRecord {
....
}
class ModelB extends ExtendedActiveRecord {
....
}