Мне нужно сохранить несколько фотографий с помощью Laravel.Изображения хранятся отдельно на диске, а ссылки на места хранятся в файле JSON в базе данных.Таким образом, у каждого пользователя есть столбец в базе данных с:
{"images": ["/user/57/house-11-1.png", "/use/57/house-12-2.png"]}
Поэтому, когда пользователь загружает файл и нажимает на кнопку сохранения, происходит следующий код:
$path = $this->processImage($request, $user->id, $house->id);
/* uploads the image to the server and pass path of the image*/
if ($path) {
$jsonstring = $house->images;
dd($jsonstring);
$arr = json_decode($jsonstring);
$arr['images'] = [$path];
$json = json_encode($arr);
dd($json);
$house->images = $json;
$house->save();
}
Используемая модель laravelназывается userHouse и сохраняет изображения как:
class userHouse extends Model implements Changeable
{
protected $casts = [
'images' => 'array',
];
...
}
processImage функция:
private function processImage($request, $userID, $houseId)
{
$path = null;
$number = rand(1, 99);
if ($request->hasFile('image')) {
$image = Image::make($request->file('image'))
->resize(750, null, function ($constraint) {
$constraint->aspectRatio();
})
->encode('png');
$path = "/vendors/{$userID}/horse-{$houseId}-{$number}.png";
Storage::disk('fileadmin')->put($path, $image->encoded);
}
return $path;
}
я получаю ошибку:
[2019-05-27 08:01:15] local.ERROR: Serialization of 'Illuminate\Http\UploadedFile' is not allowed {"userId":57,"email":"info@test.com","exception":"[object] (Exception(code: 0): Serialization of 'Illuminate\\Http\\UploadedFile' is not allowed at /Users/dsfsdf/ah-website/user/laravel/framework/src/Illuminate/Session/Store.php:128)
[stacktrace]
Как я могу добавить URLв строку JSON в базе данных?Загрузка отдельных изображений работает.