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 шт):

Автор решения: radar4ick

Когда столкнулся с тем, что надо просто добавить запись в Media, возникло 2 решения:

  1. Через модель Media::find(*id*)->replicate(); Меняешь какие надо свойства и делаешь ->save(). Но этот способ меня не устроил, ибо очень медленно выполнялся.
  2. Второй способ через $attrs = Media::find(*id*)->getAttributes(), затем так же меняешь, что надо и делаешь DB::table('media')->insert($attrs). Этот способ работает мгновенно.

При этом path указываешь туда где лежит уже файл

→ Ссылка