<?php namespace App\Models; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Facades\Cache; /** * App\Models\Config * * @property int $id * @property int $type_id config_types.id * @property string $name 配置名称 * @property string $alias 别名 * @property string $value 配置值 * @property int $listorder 排序 * @property string $input_type 组件类型 * @property string $default_value 默认值 * @property string|null $option_values 提供的选择项:json对象{"name":"value"} * @property string|null $tips 帮助信息 * @property string|null $placeholder placeholder * @property string|null $rules 验证规则 * @property string|null $rule_messages 验证错误信息json对象 * @property \Illuminate\Support\Carbon|null $created_at * @property \Illuminate\Support\Carbon|null $updated_at * @property string|null $deleted_at * @method static bool|null forceDelete() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config newModelQuery() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config newQuery() * @method static \Illuminate\Database\Query\Builder|\App\Models\Config onlyTrashed() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config query() * @method static bool|null restore() * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereAlias($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereCreatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereDefaultValue($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereDeletedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereInputType($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereListorder($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereName($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereOptionValues($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config wherePlaceholder($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereRuleMessages($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereRules($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereTips($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereTypeId($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereUpdatedAt($value) * @method static \Illuminate\Database\Eloquent\Builder|\App\Models\Config whereValue($value) * @method static \Illuminate\Database\Query\Builder|\App\Models\Config withTrashed() * @method static \Illuminate\Database\Query\Builder|\App\Models\Config withoutTrashed() * @mixin \Eloquent */ class Config extends Model { use SoftDeletes; public function getOptionValuesAttribute($value) { if (empty($value)) { return []; } if (is_null(json_decode($value, true))) { return $value; } return json_decode($value, true); } public function getRuleMessagesAttribute($value) { return json_decode($value, true)?:[]; } public static function buildConfig() { $types=ConfigType::where('parent', 0)->get(); $configs=[]; foreach ($types as $type) { $configs[$type->alias]=[]; foreach ($type->subTypes as $secondType) { $configs[$type->alias][$secondType->alias]=[]; foreach ($secondType->subTypes as $thirdType) { $configs[$type->alias][$secondType->alias][$thirdType->alias]=[]; foreach ($thirdType->configs as $config) { $configs[$type->alias][$secondType->alias][$thirdType->alias][$config->alias] =$config->value?:$config->default_value; } } } } Cache::set('system_config', $configs); config($configs); return $configs; } }