Облачное хранилище Laravel
Пишу диплом на Laravel, тема облачное хранилище, вот как оно должно работать на словах:
После регистрации, пользователь попадает в личный кабинет, где он может создать папку и дать этой папке своё имя, и внутри этой папки он может загружать файлы.
Как сделать так, чтобы пользователь создавал папку, и под эту папку создавалась отдельная таблица в БД дабы в этой таблице хранились файлы которые пользователь загружал в неё
Ответы (1 шт):
Это ужасная практика, так делать никогда не стоит. Вместо этого используйте следующую архитектуру БД:
Таблица 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
Так-же, вам нужно будет установить связь пользователя с папкой. Логика будет следующая: От юзера вы подгружаете связь с папками, а от папки вы подгружаете связь с файлами, после этого вы сможете их без проблем выводить.