use Illuminate\Database\Query\Builder;
+use Illuminate\Support\Facades\Cache;
class Model extends Field
{
if (!isset(static::$_options[$cacheKeysKey])) {
static::$_options[$cacheKeysKey] = cache()->tags([$tag])->remember($cacheKeysKey, 86400, function () use ($modelClass, $modelOrderBy, $modelOrderByWay) {
- set_time_limit(0);
- /** @var Builder $q */
- $q = $modelClass::where('created_ok', 1);
- if ($modelOrderBy) {
- $q->orderBy($modelOrderBy, $modelOrderByWay);
- }
- return $q->get()->modelKeys();
+ return $modelClass::listKeys($modelOrderBy, $modelOrderByWay);
});
}
use Illuminate\Support\Arr;
use Illuminate\Support\Carbon;
use Illuminate\Support\Facades\Cache;
+use Illuminate\Support\Facades\DB;
use Illuminate\Support\Str;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
{
return $this->filters;
}
+
+ public static function listKeys($orderBy, $orderByWay)
+ {
+ $measure_name = 'List keys of ' . static::class;
+ start_measure($measure_name);
+ set_time_limit(0);
+ /** @var \Illuminate\Database\Query\Builder $q */
+ $q = static::where('created_ok', 1);
+ if ($orderBy) {
+ $q->orderBy($orderBy, $orderByWay);
+ }
+ $i = new static();
+ $q->select($i->getPrimaryKey());
+ $res = collect(DB::connection($i->connection)->select($q->toSql(), $q->getBindings()))->pluck('id')->toArray();
+ stop_measure($measure_name);
+ return $res;
+ }
}