From 4496c0f103e4c360e26af4079b84298e2462dbad Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Thu, 8 Jun 2023 10:41:20 +0200 Subject: [PATCH] wip #5996 @1 --- src/app/Magic/Fields/Model.php | 9 ++------- .../Magic/Models/CubistMagicAbstractModel.php | 18 ++++++++++++++++++ 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/src/app/Magic/Fields/Model.php b/src/app/Magic/Fields/Model.php index 8a606e5..02d4eee 100644 --- a/src/app/Magic/Fields/Model.php +++ b/src/app/Magic/Fields/Model.php @@ -5,6 +5,7 @@ namespace Cubist\Backpack\Magic\Fields; use Illuminate\Database\Query\Builder; +use Illuminate\Support\Facades\Cache; class Model extends Field { @@ -86,13 +87,7 @@ 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); }); } diff --git a/src/app/Magic/Models/CubistMagicAbstractModel.php b/src/app/Magic/Models/CubistMagicAbstractModel.php index 86e0b08..0aa4ad3 100644 --- a/src/app/Magic/Models/CubistMagicAbstractModel.php +++ b/src/app/Magic/Models/CubistMagicAbstractModel.php @@ -35,6 +35,7 @@ use Illuminate\Http\UploadedFile; 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; @@ -1332,4 +1333,21 @@ class CubistMagicAbstractModel extends Model implements HasMedia { 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; + } } -- 2.39.5