Облачное хранилище Laravel

Рейтинг: 0Ответов: 1Опубликовано: 18.03.2023

Пишу диплом на Laravel, тема облачное хранилище, вот как оно должно работать на словах:

После регистрации, пользователь попадает в личный кабинет, где он может создать папку и дать этой папке своё имя, и внутри этой папки он может загружать файлы.

Как сделать так, чтобы пользователь создавал папку, и под эту папку создавалась отдельная таблица в БД дабы в этой таблице хранились файлы которые пользователь загружал в неё

Ответы

▲ 0Принят

Это ужасная практика, так делать никогда не стоит. Вместо этого используйте следующую архитектуру БД:

Таблица Folders: name, user_id

Таблица Files: path, folder_id

Поля для БД я предоставил минимальные, которые вам точно нужны. Но возможно, вам понадобиться сохранять еще какую-то информацию (например, имя файла). Так-же я написал поле id, но оно необходимо само собой (так-же, как и временные метки, такие как created_at и updated_at). В миграции ларавель они уже по умолчанию имеются, просто не удаляйте их.

Теперь поговорим о том, как это использовать в Laravel:

Создайте модели с миграцией, командой: php artisan make:model -m

Это создаст модель вместе с миграцией. В миграциях создайте те поля, о которых я сказал вам выше. Т.е. в итоге у вас будут две модели:

Folder - связана с таблицей Folders
File - связана с таблицей Files

После создания моделей и миграций, необходимо установить связи:

В модели Folder создайте связь один ко многим - hasMany с моделью File
В модели File создайте связь один к одному - belongsTo с моделью Folder

Так-же, вам нужно будет установить связь пользователя с папкой. Логика будет следующая: От юзера вы подгружаете связь с папками, а от папки вы подгружаете связь с файлами, после этого вы сможете их без проблем выводить.