Browse Source

优化EloquentRepository的删除功能

jqh 5 years ago
parent
commit
3d5a3212b7
1 changed files with 25 additions and 2 deletions
  1. 25 2
      src/Repositories/EloquentRepository.php

+ 25 - 2
src/Repositories/EloquentRepository.php

@@ -459,8 +459,7 @@ class EloquentRepository extends Repository implements TreeRepository
                 return;
             }
 
-            $model = $this->createEloquent($data);
-            $model->exists = true;
+            $model = $this->createDeletingModel($id, $data);
 
             if ($this->isSoftDeletes && $model->trashed()) {
                 $form->deleteFiles($data, true);
@@ -477,6 +476,30 @@ class EloquentRepository extends Repository implements TreeRepository
         return true;
     }
 
+    /**
+     * @param mixed $id
+     * @param array $data
+     *
+     * @return \Illuminate\Database\Eloquent\Model
+     */
+    protected function createDeletingModel($id, $data)
+    {
+        $model = $this->createEloquent();
+        $keyName = $model->getKeyName();
+
+        $model->{$keyName} = $id;
+
+        if ($this->isSoftDeletes) {
+            $deletedColumn = $model->getDeletedAtColumn();
+
+            $model->{$deletedColumn} = $data[$deletedColumn] ?? null;
+        }
+
+        $model->exists = true;
+
+        return $model;
+    }
+
     /**
      * 查询删除前的行数据.
      *