2
2
3
3
namespace OwenIt \Auditing ;
4
4
5
+ use Illuminate \Database \Eloquent \Model ;
5
6
use Illuminate \Database \Eloquent \Relations \BelongsToMany ;
6
7
use Illuminate \Database \Eloquent \Relations \MorphMany ;
7
8
use Illuminate \Database \Eloquent \SoftDeletes ;
8
9
use Illuminate \Support \Arr ;
10
+ use Illuminate \Support \Collection ;
9
11
use Illuminate \Support \Facades \App ;
10
12
use Illuminate \Support \Facades \Config ;
11
13
use Illuminate \Support \Facades \Event ;
@@ -754,7 +756,7 @@ public function auditDetach(string $relationName, $ids = null, $touch = true, $c
754
756
755
757
/**
756
758
* @param string $relationName
757
- * @param \Illuminate\Support\ Collection|\Illuminate\Database\Eloquent\ Model|array $ids
759
+ * @param Collection|Model|array $ids
758
760
* @param bool $detaching
759
761
* @param array $columns
760
762
* @param \Closure|null $callback
@@ -787,7 +789,7 @@ public function auditSync(string $relationName, $ids, $detaching = true, $column
787
789
788
790
/**
789
791
* @param string $relationName
790
- * @param \Illuminate\Support\ Collection|\Illuminate\Database\Eloquent\ Model|array $ids
792
+ * @param Collection|Model|array $ids
791
793
* @param array $columns
792
794
* @param \Closure|null $callback
793
795
* @return array
@@ -800,11 +802,37 @@ public function auditSyncWithoutDetaching(string $relationName, $ids, $columns =
800
802
return $ this ->auditSync ($ relationName , $ ids , false , $ columns , $ callback );
801
803
}
802
804
805
+ /**
806
+ * @param string $relationName
807
+ * @param Collection|Model|array $ids
808
+ * @param array $values
809
+ * @param bool $detaching
810
+ * @param array $columns
811
+ * @param \Closure|null $callback
812
+ * @return array
813
+ */
814
+ public function auditSyncWithPivotValues (string $ relationName , $ ids , array $ values , bool $ detaching = true , $ columns = ['* ' ], $ callback = null )
815
+ {
816
+ $ this ->validateRelationshipMethodExistence ($ relationName , 'syncWithPivotValues ' );
817
+
818
+ if ($ ids instanceof Model) {
819
+ $ ids = $ ids ->getKey ();
820
+ } elseif ($ ids instanceof \Illuminate \Database \Eloquent \Collection) {
821
+ $ ids = $ ids ->isEmpty () ? [] : $ ids ->pluck ($ ids ->first ()->getKeyName ())->toArray ();
822
+ } elseif ($ ids instanceof Collection) {
823
+ $ ids = $ ids ->toArray ();
824
+ }
825
+
826
+ return $ this ->auditSync ($ relationName , collect (Arr::wrap ($ ids ))->mapWithKeys (function ($ id ) use ($ values ) {
827
+ return [$ id => $ values ];
828
+ }), $ detaching , $ columns , $ callback );
829
+ }
830
+
803
831
/**
804
832
* @param string $relationName
805
833
* @param string $event
806
- * @param \Illuminate\Support\ Collection $old
807
- * @param \Illuminate\Support\ Collection $new
834
+ * @param Collection $old
835
+ * @param Collection $new
808
836
* @return void
809
837
*/
810
838
private function dispatchRelationAuditEvent ($ relationName , $ event , $ old , $ new )
0 commit comments