Пример #1
0
 /**
  * Возвращает записи из словаря по системному имени словаря и набору IDs нужных записей.
  * Третьим параметром можно передать метку, указывающую на необходимость сделать экстракт каждой записи.
  *
  * @param $slug
  * @param $val_ids
  * @param string $with
  * @param bool $extract
  * @param bool $unset
  * @return $this|Collection|\Illuminate\Database\Eloquent\Builder|\Illuminate\Database\Eloquent\Model|null|static
  */
 public static function valuesBySlugAndIds($slug, $val_ids, $with = 'all', $extract = true, $unset = true, $extract_ids = false)
 {
     $return = new Collection();
     #$dic = Dic::where('slug', $slug)->first();
     #$dic = @Config::get(self::$cache_key)['by_slug'][$slug];
     $dic = Dic::by_slug($slug);
     if (!is_object($dic) || !is_array($val_ids) || !count($val_ids)) {
         return $return;
     }
     $values = DicVal::where('dic_id', $dic->id)->where('version_of', NULL)->whereIn('id', $val_ids);
     if ($with == 'all') {
         $with = ['meta', 'fields', 'textfields', 'seo', 'related_dicvals'];
     } else {
         $with = (array) $with;
     }
     $db_remember_timeout = Config::get('app.settings.main.db_remember_timeout');
     if (count($with)) {
         ##
         ## Cache relations
         ##
         if (NULL != $db_remember_timeout && is_numeric($db_remember_timeout) && $db_remember_timeout > 0) {
             $temp = [];
             foreach ($with as $relation) {
                 $temp[$relation] = function ($query) use($db_remember_timeout) {
                     $query->remember($db_remember_timeout);
                 };
             }
             $with = $temp;
         }
         $values = $values->with($with);
     }
     ##
     ## Cache query
     ##
     if (NULL != $db_remember_timeout && is_numeric($db_remember_timeout) && $db_remember_timeout > 0) {
         $values->remember($db_remember_timeout);
     }
     $values = $values->get();
     #Helper::tad($values);
     if ($extract) {
         $values = DicLib::extracts($values, null, $unset, $extract_ids);
     }
     #Helper::tad($values);
     return $values;
 }