Как писать пользовательскую логику (в контексте Laravel)?
Первый раз подобное решился написать - понял что ни в зуб ногой. В голове вопросы вида: "Это что, для каждого пользователя отдельная база? Или таблица? А как всё это будет связано?". В общем, покидайте в меня статьями, или книгами, которые мне нужно почитать на подобном уровне.
Учебный проект - простой to-do список с пользователями (максимально простой сугубо для понимания базовых вещей).
База одна. На каждую сущность отдельная таблица. Например Статьи, Категории, пользователи. У этой таблицы есть поля и записи. Поля - свойства объекта. Модель в MVC работает с этой сущностью. Делает выборку из таблицы, запись и т.д Все данные передает в контроллер
Т.е. допустим 2 таблицы, "Записи" и "Пользователи", у записей будет поле userid , и когда мне нужно будет вывести все записи для конкретного пользователя я просто что-то вроде select * from table_notes where userid = 'Daniel'? Правильно понимаю?
Если да, то осталось понять, как вообще работает авторизация и т.п. Но это уже отдельный разговор, насколько я понимаю.
MVC я в общих чертах понимаю как M(часть приложения, работающая с БД) V(отображение) C(логика между моделью и вьюшкой), что вроде не далеко от истины. Ясное дело, что буду копать глубже, я не понимаю другого - саму концепцию пользователей, и чем он является, т.е. что происходит внутри, когда делается запись от конкретного пользователя, что вообще значит "сделать запись под конкретным пользователем", да и в целом что это "являться определённым пользователем" для системы. Кашица в этом плане =)
Очень просто. Пользователь это просто запись в таблице Users, объект класса (сущности) User. У него есть свойства (почта, логин, пароль) Если пользователь публикует статью то у этой статьи в user_id будет стоять id пользователя. При авторизации просто проверяется логин и пароль, если все совпадает, то в сессии или куки записывается определенная информация, позволяющая скрипту идентифицировать пользователя
Также в Laravel есть middleware. Например, если в роутах определенной группе маршрутов или маршрутов прописать middlware auth переход на страницу смогут совершить только авторизованные пользователи
Денис Каракчиев, они существуют разумеется, но только как отдельная запись в таблице. В коде пользователь это объект модели User. Но это такая же сущность, как например статьи. А то, что именно из себя представляет пользователь, все действия с этой сущностью решает модель. Например, в классе User могут быть методы Register, Login, Logout, Edit и т д В этих методах прописывается логика модели. Если пользователю необходимо взаимодействовать с другой сущностью, но в таблице этой сущности должно быть поле user_id в которое мы пишем id пользователя. А id пользователя бекенд получает из сессий или кук
Например, тот же todo list. Допустим у нас есть несколько пользователей и список дел для каждого из них. Отсюда получаем 2 сущности User и Task. У юзера есть id name password и любые другие поля. И есть таблица task в которой хранится id (самой задачи) user_id, name (имя задачи), text, status (завершена или нет) дата создания задачи и крайний срок. При регистрации мы добавляем запись в таблицу users. При авторизации проверяем, есть ли пользователь с таким логином и паролем в базе. Если есть - прописываем его в сессию и авторизовываем. При logout просто уничножаем его данные в сессии. При создании задачи кроме всех полей пишем userid пользователя в соответствующее поле таблицы task и т д
Но в laravel уже есть встроенная система авторизации. Можно либо использовать ее, либо написать самому. Но из коробки там все решается за 5 минут php artisan make:auth