Ejemplo n.º 1
0
 /**
  * 缓存特定动态设置分组下的设置数据
  *
  * @param string $type_name 动态设置分组名
  * @param string $format 'object'|'array' 缓存数据的格式,默认'object'为 Eloquent 查询之后的 Illuminate\Support\Collection 对象,可选'array'为缓存键值对化处理之后的数组
  * @return boolean true|false 缓存成功,则返回true, 否则返回false
  */
 public static function cacheSetting($type_name, $format = 'object')
 {
     $setting_type = SettingType::where('name', '=', e($type_name))->first();
     if (is_null($setting_type)) {
         return false;
         //缓存失败,不存在该分组名
     } else {
         $type_id = $setting_type->id;
         $settings = Setting::where('type_id', '=', e($type_id))->where('status', '=', '1')->get();
         //获取该$type_name下动态设置settings
         if ($format === 'array') {
             $set = array();
             if (!$settings->isEmpty()) {
                 //Eloquent ORM 查询结果集非空
                 foreach ($settings as $setting) {
                     $set[$setting->name] = $setting->value;
                     //数组键值对缓存
                 }
             }
         } else {
             $set = $settings;
         }
         Cache::remember($type_name, 60, function () use($type_id, $set) {
             return $set;
         });
         //虽说属于动态设置,但一般被改动的几率较小,故这里建议缓存1小时(即60分钟)
         return true;
         //缓存成功
     }
 }