Spatie Media, создание записи в таблице без перемещения
Использую модуль Spatie laravel-medialibrary для сохранения изображений.
Чтобы сохранить изображение в таблице media, нужно вызвать метод toMediaCollection() примерно так:
$item->addMedia()->toMediaCollection();
в результате файл поместится в папку по умолчанию.
Но выбор и сохранение изображения происходит из существующего файла, которые изначально выводятся с помощью File
$files = collect(File::allFiles(public_path('/images')) );
...
return view('view', ['images' => $files]);
они уже находятся в папке, и нужно при выборе и сохранении не перемещать уже существующие изображения, а нужно сделать только запись в таблице media о выбранном изображении.
Это нужно из-за того, что изображения могут лежать в подпапках, и в результате нового сохранения изображение переместится в папку, назначенную по умолчанию, а нужно чтобы изображение осталось в своей папке.
Можно ли такое сделать?
Ответы (1 шт):
Когда столкнулся с тем, что надо просто добавить запись в Media, возникло 2 решения:
- Через модель
Media::find(*id*)->replicate(); Меняешь какие надо свойства и делаешь->save(). Но этот способ меня не устроил, ибо очень медленно выполнялся. - Второй способ через
$attrs = Media::find(*id*)->getAttributes(), затем так же меняешь, что надо и делаешьDB::table('media')->insert($attrs). Этот способ работает мгновенно.
При этом path указываешь туда где лежит уже файл