Spatie媒体库getMedia()不会返回所有图像

时间:2019-08-25 21:06:20

标签: laravel

我正在从RTF编辑器中以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')始终仅返回第一个创建的图像,并且计数始终为一个。所以最终发生的事情是,无论我上传了多少张图片,它们都会用第一张图片的网址替换所有src标签。

1 个答案:

答案 0 :(得分:0)

这是我的最终解决方案。该关系可能是在上传第一张图像后缓存的,这可能就是为什么我总是得到第一张图像。在模型上加载媒体关系后,我能够正确检索集合中的所有图像。

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);
}