diff --git a/src/Models/Activity.php b/src/Models/Activity.php index 01966bb2..a3017fe3 100644 --- a/src/Models/Activity.php +++ b/src/Models/Activity.php @@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\MorphTo; +use Illuminate\Database\Eloquent\SoftDeletingScope; use Illuminate\Support\Arr; use Illuminate\Support\Collection; use Spatie\Activitylog\Contracts\Activity as ActivityContract; @@ -65,7 +66,7 @@ public function __construct(array $attributes = []) public function subject(): MorphTo { if (config('activitylog.subject_returns_soft_deleted_models')) { - return $this->morphTo()->withTrashed(); + return $this->morphTo()->withoutGlobalScope(SoftDeletingScope::class); } return $this->morphTo(); diff --git a/tests/LogsActivityTest.php b/tests/LogsActivityTest.php index b5a08dfe..6de2f745 100644 --- a/tests/LogsActivityTest.php +++ b/tests/LogsActivityTest.php @@ -242,6 +242,34 @@ public function getActivitylogOptions(): LogOptions $this->assertEquals('changed name', $this->getLastActivity()->subject->name); }); +it('can fetch subject when model does not use soft deletes and config is enabled', function () { + app()['config']->set('activitylog.subject_returns_soft_deleted_models', true); + + // Create a model class without SoftDeletes + $articleClass = new class() extends Article { + use LogsActivity; + + // Note: No SoftDeletes trait + + public function getActivitylogOptions(): LogOptions + { + return LogOptions::defaults(); + } + }; + + $article = new $articleClass(); + $article->name = 'test article'; + $article->save(); + + $activity = Activity::first(); + + // This should not throw an exception even though the model doesn't use SoftDeletes + $subject = $activity->subject; + + $this->assertNotNull($subject); + $this->assertEquals('test article', $subject->name); +}); + it('can log activity to log named in the model', function () { $articleClass = new class() extends Article { use LogsActivity; diff --git a/tests/Models/Activity.php b/tests/Models/Activity.php index c9a55eef..250d215e 100644 --- a/tests/Models/Activity.php +++ b/tests/Models/Activity.php @@ -5,6 +5,7 @@ use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\MorphTo; +use Illuminate\Database\Eloquent\SoftDeletingScope; use Illuminate\Support\Arr; use Illuminate\Support\Collection; use Spatie\Activitylog\Contracts\Activity as ActivityContract; @@ -29,7 +30,7 @@ public function __construct(array $attributes = []) public function subject(): MorphTo { if (config('activitylog.subject_returns_soft_deleted_models')) { - return $this->morphTo()->withTrashed(); + return $this->morphTo()->withoutGlobalScope(SoftDeletingScope::class); } return $this->morphTo();