]> _ Git - cubist_cms-back.git/commitdiff
wip #5996 @1
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 8 Jun 2023 08:41:20 +0000 (10:41 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Thu, 8 Jun 2023 08:41:20 +0000 (10:41 +0200)
src/app/Magic/Fields/Model.php
src/app/Magic/Models/CubistMagicAbstractModel.php

index 8a606e5bb9a6949ddc0fef51c69ea2f73803d4ad..02d4eee0d2fa6be1cf80ef62d7536f3db8edaa28 100644 (file)
@@ -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);
             });
         }
 
index 86e0b081db947e272415b9bd5b9da56d98b29ec4..0aa4ad3583085273dd8bf38304e59c55f23bc2df 100644 (file)
@@ -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;
+    }
 }