首页 > 解决方案 > Spatie 媒体库 getMedia() 未返回所有图像

问题描述

我从富文本编辑器接收多张 base64 图像。我的想法是上传所有图片,并将文章内容中的 base64 img src 替换为新创建的图片路径。我正在使用 spatie 媒体库和 Laravel。

foreach ($data['images'] as $image) {
    $article->addMediaFromBase64($image)->toMediaCollection('article-images');
    $mediaItems = $article->getMedia('article-images');
    $article->content = str_replace($image, $mediaItems[count($mediaItems) - 1]->getFullUrl(), $article->content);
    $article->save();
}

我遇到的问题是 $article->getMedia('article-images') 总是只返回第一个创建的图像,并且计数总是一个。所以最终发生的事情是无论我上传多少张图片,它都会用第一张图片的 url 替换所有的 src 标签。

标签: laravel

解决方案


这是我采用的最终解决方案。这种关系可能在第一次上传图片后被缓存,这可能就是我总是得到第一张图片的原因。在模型上加载媒体关系后,我能够正确检索集合中的所有图像。

foreach ($data['images'] as $image) {
     $article->addMediaFromBase64($image)->toMediaCollection('article-images');
     $mediaItems = $article->load('media')->getMedia('article-images');
     $article->content = str_replace($image, $mediaItems[count($mediaItems) - 1]->getFullUrl(), $article->content);
}

推荐阅读