Detected N+1 Query when using singleFile() in MediaCollection, but only on a model that already has an image #3247
Unanswered
AtlasApollo
asked this question in
Q&A
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi, can you please help if you have an idea what might be the issue?
I noticed in my logs that N+1 Queries are detected.
I found some places where I could have added a with('media') on the calls I'm making, and that reduced the "Num-Called" in the error report from 4 to 2. I think that's an improvement, but it would be wonderful to not have any extra calls at all.
I tried to narrow down what might be the cause and have discovered that:
This is what the log looks like:
[2023-04-19 20:41:39] local.INFO: Detected N+1 Query
[2023-04-19 20:41:39] local.INFO: Model: App\Models\Story
Relation: Spatie\MediaLibrary\MediaCollections\Models\Media
Num-Called: 2
Call-Stack:
#20 /vendor/spatie/laravel-medialibrary/src/InteractsWithMedia.php:544
#21 /vendor/spatie/laravel-medialibrary/src/MediaCollections/MediaRepository.php:31
#22 /vendor/spatie/laravel-medialibrary/src/InteractsWithMedia.php:270
#23 /vendor/spatie/laravel-medialibrary/src/InteractsWithMedia.php:477
#24 /vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php:483
#25 /vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php:428
#26 /vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php:344
#27 /vendor/spatie/laravel-medialibrary/src/MediaCollections/Models/Media.php:382
#28 /vendor/spatie/laravel-medialibrary/src/MediaCollections/Models/Media.php:355
#29 /vendor/spatie/laravel-medialibrary-pro/src/Models/TemporaryUpload.php:167
#30 /vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php:540
#31 /vendor/spatie/laravel-medialibrary/src/MediaCollections/FileAdder.php:297
#32 /vendor/spatie/laravel-medialibrary-pro/src/PendingMediaLibraryRequestHandler.php:111
#33 /vendor/laravel/framework/src/Illuminate/Collections/Traits/EnumeratesValues.php:235
#34 /vendor/spatie/laravel-medialibrary-pro/src/PendingMediaLibraryRequestHandler.php:112
#35 /app/Http/Controllers/StoryController.php:440
#36 /routes/web.php:619
#37 /vendor/laravel/framework/src/Illuminate/Routing/CallableDispatcher.php:40
#38 /vendor/laravel/framework/src/Illuminate/Routing/Route.php:237
#39 /vendor/laravel/framework/src/Illuminate/Routing/Route.php:208
#40 /vendor/laravel/framework/src/Illuminate/Routing/Router.php:798
#41 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:141
#42 /vendor/laravel/framework/src/Illuminate/Auth/Middleware/EnsureEmailIsVerified.php:30
#43 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
#44 /vendor/inertiajs/inertia-laravel/src/Middleware.php:87
#45 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
#46 /vendor/laravel/jetstream/src/Http/Middleware/ShareInertiaData.php:66
#47 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
#48 /vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:50
#49 /vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:180
This is the MediaCollection registration (in the Model):
This is the code handling the upload:
Please let me know if I can provide anything else.
Thank you,
Mike
Beta Was this translation helpful? Give feedback.
All reactions