我在我的应用中使用laravel spatie。我有个问题。
当用户更新其图像列表时。管理员必须批准用户刚刚更新的图像列表。如果用户添加图像,我只会添加更多。但是,当用户更改其拥有的图像时,该怎么做?我无法更改collection_name,因为如果进行更改,则该图像不会显示在用户个人资料中。你对我有理想吗?
我有一个理想的选择:我在custom_properties列中添加了值{'change' => 'false'}
。当用户更改此图像时,我将custom_properties更改为{'change' => 'true'}
。并且当管理员批准更改时,我必须将custom_properties更新为{'change' => 'false'}
。但是我无法访问custom_properties列的值。 (如您所知,laravel spatie给我们提供了一个媒体表,它有一个custom_properties列,其中包含json数据)。因此,请帮助我访问此列并更新其中的数据。
对不起,因为我的英语不好。
$mediaOld = Media::where(['model_id' => $doctor_id, 'collection_name' => 'doctor_achieved'])->get();
if (isset($mediaOld[$index])) {
$mediaOld[$index]->update(['custom_properties->change' => 'true']);
$mediaOld[$index]->save(); // Its not working
return $mediaOld[$index]->custom_properties;
}
答案 0 :(得分:0)
这可能会有所帮助:
$mediaItem = Media::find($id);
$mediaItem->setCustomProperty('name', 'value'); // adds a new custom propery or updates an existing one
$mediaItem->forgetCustomProperty('name'); // removes a custom propery
$mediaItem->save();
https://docs.spatie.be/laravel-medialibrary/v7/advanced-usage/using-custom-properties/