From fbdcba9d7ff34d4d781d28bfddb51b4c73bddffc Mon Sep 17 00:00:00 2001 From: Luke Kuzmish <42181698+cosmastech@users.noreply.github.com> Date: Wed, 29 Mar 2023 03:06:33 -0400 Subject: [PATCH] set model relation (#3219) --- src/InteractsWithMedia.php | 4 +++- .../FileAdder/MediaConversions/DeleteMediaTest.php | 4 ++-- tests/Feature/InteractsWithMedia/GetMediaTest.php | 14 ++++++++++++++ 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/InteractsWithMedia.php b/src/InteractsWithMedia.php index 1a0b6fd54..e8814c7e8 100644 --- a/src/InteractsWithMedia.php +++ b/src/InteractsWithMedia.php @@ -549,7 +549,9 @@ public function loadMedia(string $collectionName): Collection return $collection ->filter(fn (Media $mediaItem) => $mediaItem->collection_name === $collectionName) ->sortBy('order_column') - ->values(); + ->values() + ->each + ->setRelation('model', $this); } public function prepareToAttachMedia(Media $media, FileAdder $fileAdder): void diff --git a/tests/Feature/FileAdder/MediaConversions/DeleteMediaTest.php b/tests/Feature/FileAdder/MediaConversions/DeleteMediaTest.php index 7487eda17..a3493f68c 100644 --- a/tests/Feature/FileAdder/MediaConversions/DeleteMediaTest.php +++ b/tests/Feature/FileAdder/MediaConversions/DeleteMediaTest.php @@ -60,8 +60,8 @@ $this->testModelWithoutMediaConversions = $this->testModelWithoutMediaConversions->fresh(); expect($this->testModelWithoutMediaConversions->getMedia('default'))->toHaveCount(3); - expect($excludedMedia[0])->toEqual($this->testModelWithoutMediaConversions->getMedia('images')[0]); - expect($excludedMedia[1])->toEqual($this->testModelWithoutMediaConversions->getMedia('images')[1]); + expect($excludedMedia[0]->withoutRelations())->toEqual($this->testModelWithoutMediaConversions->getMedia('images')[0]->withoutRelations()); + expect($excludedMedia[1]->withoutRelations())->toEqual($this->testModelWithoutMediaConversions->getMedia('images')[1]->withoutRelations()); }); it('provides a chainable method for clearing a collection', function () { diff --git a/tests/Feature/InteractsWithMedia/GetMediaTest.php b/tests/Feature/InteractsWithMedia/GetMediaTest.php index c0bcaacfe..52dd8c96f 100644 --- a/tests/Feature/InteractsWithMedia/GetMediaTest.php +++ b/tests/Feature/InteractsWithMedia/GetMediaTest.php @@ -294,6 +294,20 @@ ->toArray()); }); +it('will set model relation', function() { + DB::enableQueryLog(); + + $this->testModel->loadMedia('images'); + expect(DB::getQueryLog())->toHaveCount(1); + $this->testModel->media->each(function(Media $media) { + expect($media->model)->toBeInstanceOf($this->testModel::class); + }); + + expect(DB::getQueryLog())->toHaveCount(1); + + DB::DisableQueryLog(); +}); + it('will cache loaded media', function () { DB::enableQueryLog();