peterguo 6 hari lalu
induk
melakukan
6f918c5359

+ 4 - 4
app/Http/Controllers/API/FolderController.php

@@ -274,13 +274,13 @@ class FolderController extends Controller
         $folders = Folder::with(["namingRule" => function ($query) {
             $query->select(['id', 'name', 'combination_rules']);
         }])
-            ->select(['id', 'name', 'naming_rule_id'])
+            ->select(['id', 'name', 'naming_rule_id', 'created_at', 'updated_at'])
             ->where($objectWhere)
             ->when($name, fn($query) => $query->where("name", "like", "%$name%"))
             ->when($folderId, fn($query) => $query->where("parent_id", $folderId))
             ->when(! $folderId, fn($query) => $query->where("parent_id", 0))
             ->when($namingRuleIds, fn($query) => $query->whereIn("naming_rule_id", $namingRuleIds))
-            ->orderBy($orderByFiled, $orderByType)
+            ->orderBy(in_array($orderByFiled, Folder::getColumns()) ? $orderByFiled : 'updated_at', $orderByType)
             ->paginate($pageSize);
         $folders_total = $folders->total();
         $sonFolderCount=Folder::query()
@@ -316,7 +316,7 @@ class FolderController extends Controller
             ->when($docStages, fn($query) => $query->whereIn('doc_stage', $docStages))
             ->when($docTypes, fn($query) => $query->whereIn('doc_type', $docTypes))
             ->when($namingRuleIds, fn($query) => $query->whereIn('naming_rule_id', $namingRuleIds))
-            ->orderBy($orderByFiled, $orderByType)
+            ->orderBy(in_array($orderByFiled, File::getColumns()) ? $orderByFiled : 'updated_at', $orderByType)
             ->get();
 
         $files_total = $files->count();
@@ -334,7 +334,7 @@ class FolderController extends Controller
                 ->when($docStages, fn($query) => $query->whereIn('doc_stage', $docStages))
                 ->when($docTypes, fn($query) => $query->whereIn('doc_type', $docTypes))
                 ->when($namingRuleIds, fn($query) => $query->whereIn('naming_rule_id', $namingRuleIds))
-                ->orderBy($orderByFiled, $orderByType)
+                ->orderBy(in_array($orderByFiled, File::getColumns()) ? $orderByFiled : 'updated_at', $orderByType)
                 ->offset($offset)
                 ->limit($limit)
                 ->get();

+ 6 - 0
app/Models/File.php

@@ -11,11 +11,17 @@ use Illuminate\Database\Eloquent\Relations\HasOne;
 use Illuminate\Database\Eloquent\Relations\HasOneThrough;
 use Illuminate\Database\Eloquent\SoftDeletes;
 use Illuminate\Support\Facades\Auth;
+use Illuminate\Support\Facades\Schema;
 
 class File extends Model
 {
     use HasFactory, SoftDeletes;
 
+    public static function getColumns(): array
+    {
+        return Schema::getColumnListing((new self)->getTable());
+    }
+
     protected $fillable = [
         "company_id",
         "pathname",

+ 5 - 0
app/Models/Folder.php

@@ -10,6 +10,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo;
 use Illuminate\Database\Eloquent\Relations\HasMany;
 use Illuminate\Database\Eloquent\Relations\HasOneThrough;
 use Illuminate\Database\Eloquent\SoftDeletes;
+use Illuminate\Support\Facades\Schema;
 
 class Folder extends Model
 {
@@ -17,6 +18,10 @@ class Folder extends Model
 
     protected $guarded = ['id'];
     private mixed $children;
+    public static function getColumns(): array
+    {
+        return Schema::getColumnListing((new self)->getTable());
+    }
 
     protected static function booted(): void
     {