/
v.bolshakov
/
AIEcosystem-Testing
Обзор
Документация
Войти
/
v.bolshakov
/
AIEcosystem-Testing
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
dev
common/helpers/ModelHelper.php
117 строк
3 KB
Developer
Initial commit
03 авг 2026, 17:43
03 авг 2026, 17:43
7433917
Код
Авторство
О чём код?
<?php namespace common\helpers; use common\forms\base\BaseModel as Form; use common\models\base\BaseModel as Model; use common\models\base\IstBaseModel; use Yii; /** * Хелпер для работы с моделями * * @author Dmitry E. Semenov <sde.tomsk@gmail.com> * @copyright Self (c) 2019 */ class ModelHelper { /** * Подготовить начальное состояние для модели * * @param Model $model * @param array $fields * @return array */ public static function prepareState($model, array $fields = []) { $fields = $model->getPublicFields(); $state = []; foreach ($fields as $index => $field) { if ($field instanceof \Closure) { $name = $index; $value = call_user_func($field); } else { $name = $field; $value = $model->$name; } $state[$name] = $value; } return $state; } /** * Удаление объекта * * @param $model * @param $response * @return bool */ public static function doDelete($model, &$response) { $title = ''; try { $result = false; if ($model instanceof Model or $model instanceof IstBaseModel) { $title = $model->__toString(); $result = $model->delete(!$model->softDelete); } elseif ($model instanceof Form) { $title = $model->getModel()->__toString(); $result = $model->delete(); } if ($result) { $response = Yii::t('app', '«{0}» was deleted', [ $title ]); return true; } else { $response = Yii::t('app', 'Error deleted «{model}»', [ 'model' => $title ]); return false; } } catch (\yii\db\Exception $db) { switch ((int)$db->getCode()) { case 1451: $reason = 'Обнаружены порожденные данные'; break; default: $reason = 'Ошибка на уровне базы данных'; break; } if (YII_DEBUG) { $reason .= $db->getMessage(); } $response = Yii::t('app', 'Error deleted «{model}»: ({reason})', [ 'model' => $title, // 'reason' => Html::tag('div', $reason, ['class' => 'text-muted']) 'reason' => $reason ]); return false; } catch (\Exception $e) { $response = Yii::t('app', 'Error deleted «{model}»: ({reason})', [ 'model' => $title, 'reason' => $e->getMessage() ]); return false; } catch (\Throwable $e) { $response = Yii::t('app', 'Error deleted «{model}»: ({reason})', [ 'model' => $title, 'reason' => $e->getMessage() ]); return false; } } }