用这个扩展包的编辑场景有什么好的解决方式么?
编辑场景下,前端调用的是图片url,然后比如删除了几张图片,又添加了几张图片,这种场景下怎么写相应的逻辑比较好?
以下是目前我所写的流程,感觉比较丑,@liyu001989 老师能否说下有没有更好的解决办法?
public function update(Request $request, User $user)
{
$user->update($request->post());
$user->getMedia('photos')->each(function ($item) {
$item->setCustomProperty('is_delete', true);
$item->save();
});
collect($request->post('photos'))->each(function ($item) use ($user) {
if (isset($item['path'])) {
// 如果有path属性,说明是新上传的文件
$user->addMedia(Storage::path($item['path']))->toMediaCollection('photos');
}else{
// 否则是已经上传的文件
$user->addMediaFromUrl($item['url'])->toMediaCollection('photos');
}
});
$user->clearMediaCollectionExcept('photos',$user->getMedia('photos',['custom_properties.is_delete' !== true]));
$user->save();
return $this->created()
}
你这是跟 更新的接口,最后返回了 created? 不返回数据?
更新了用户信息,然后删了已有的media,然后添加新的media? 你是不是应该考虑分开更新,用户资源 和 media 资源接口分开
api状态码,更新和创建都应该返回201吧?这个是自定义的方法返回201的,我写的是有返回数据的,只是在这里示例的时候没有写。
即使分开的话,编辑场景下,已有的图片提交的只是一个url,而新传的图片提交的是上传成功后返回的文件路径,不知道该怎么处理合适,分开以后,media接口更新时提供一个关联模型id,然后处理方式还是一样啊,只是想知道编辑场景下,比如编辑一篇文章,文章关联了10张图片,然后删除了5张,又新增了3张这种情况,流程怎么写比较好一点?
又想了下问题所在,因为我是先上传的图片,然后再创建 user ,直接调用media接口上传,貌似无法指定关联模型?