/** * Возвращает записи из словаря по системному имени словаря и набору 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; }