laravel - 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 标签。
解决方案
这是我采用的最终解决方案。这种关系可能在第一次上传图片后被缓存,这可能就是我总是得到第一张图片的原因。在模型上加载媒体关系后,我能够正确检索集合中的所有图像。
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);
}
推荐阅读
- android - Android:在一个项目中实现的两个不同模块如何通过一些涉及视图的数据相互通信?
- javascript - 在 webpack 中注册一个 service worker
- ios - 即使添加了视图,仍会收到 UIViewContorller 的触摸事件
- java - 从特定索引到最后一行计算 excel 行 - Apache POI
- linux - 给定用户计算他们的进程消耗了多少字节
- c++ - 模板推导中的 const T & 和 T & 有什么区别
- c++ - 为什么在某些情况下使用友元运算符<<,而在其他情况下不使用
- python - 在散景中包含聚集条形图的工具提示
- reactjs - 使用 React 以编程方式返回主页
- perl - Tcl 脚本还是 Perl?