Порекомендуйте подход, как лучше реализовать задачу?
Здравствуйте.
Дали тестовое задание, хочется как то продумано его сделать, с пользой для себя. Попробовать применить паттерны, SOLID и т.д. и сделать все на чистом ПХП либо Laravel использовать.
Суть задания. Есть меню ресторана на неделю в JSON формате. Надо что бы при вводе юзером своего логина, отображалось недельное меню с возможностью сделать заказа, если уже на текущий день у данного юзера есть заказ, то надо его отобразить. Т.е. регистрация как таковая не нужна, если юзер сделал заказ, значит надо заказ и логин сохранить в базу.
Думаю делать следующим образом.
База данных MySQL: две таблицы, юзеры и заказы. В заказах буду хранить логин и json заказа, т.е. как то надо его сформировать, выделить из общего JSON.
Классы по паттерну MVC создам контроллеры юзеры и заказы. В юзерах будет метод проверяющий есть ли юзер в таблице заказов, метод отображения юзера и его заказа, метод отображающий меню. В заказах будут метод сохранения заказа и логина в таблицу заказ. Или не нужен контроллер заказы, если метод заказа будет в контроллере юзеры?
Модели создам юзер и заказ. Опять же стоит ли делать модель заказа.
Вот как то так думаю начать. В принципе что такое MVC, некоторые паттерны понимаю, но не настолько опытен что бы оценить какой подход выбрать, что бы можно было потом без сильных проблем добавить авторизацию, админа, Guzzle, для роутинга пакеты Симфони и т.д.
1. Для начала определил бы что аткое "заказ" и придумал как его можно затолкать в базу.
Разузнал бы подробнее, что там за инновационная схема с логином, но без регистрации.
2. Спроектировал бы структуру БД
3. Выбрал бы фреймворк, установил его и настроил
4. Заказал бы верстку страничек логина, списка заказов и создания заказа (возможно понадобится больше страниц)
5. Создал бы экшены для этого всего
(тут много подпунктов, но мне уже лень)
Не точно выразился, это тестовое задание, уже поправил.
Решил делать на ларавеле.
Покачто смущает то что надо из меню выбрать те блюда которые юзер заказал и поместить этот заказ в базу, т.к. меню в JSON формате, как будет правильно, сохранять спарсеный кусок JSON (заказ юзера) сразу в базу? Или как то подругому? какие в ларавеле могут быть проблемы с этим?
210mev, В ларавеле никакие. Ему все равно что вы там передали - кусок json, текст, или фотографии котиков.
Вопрос в том, как вы собираетесь это хранить и делать выборку, какие вообще требования к этим данным, что такое "заказ"?
Если это хобби-проект с целью "поиграться", то можете хранить как угодно, хоть на глиняные таблички вручную переписывать. Если для бизнеса - неплохо бы включить голову и подумать:
зачем эти данные вообще хранятся, что с ними нужно делать прямо сейчас, или что понадобится с ними делать в будущем. Возможно JSON и не самый плохой вариант, но это не точно.
Stalker_RED, Это тест задание. Поэтому и хочется сделать как то осмыслено, как бы для бизнеса. Я так понял что MySQL может хранить JSON с версии 5.7, можно даже какие то выборки делать. Но прежде чем выбрать сохранять JSON в бд, вместо например паристь какие то данные из JSON, например десерты, и сохранять их в одельное поле бд, хотелось бы услышать советы на сколько это в будущем может быть хуже\лучше?
210mev, с мойе стороны это выглядит так:
Угадайте что в задании, угадайте что у меня в голове, угадайте что будет лучше для задания и расскажите что-нибудь.
Хотите анекдот, могу рассказать? Хоть настроение поднимется. А то смысл теряется.
Stalker_RED, Извените что так сумбурно описываю. Но я же не прошу ничего угадывать.
Вот вопрос без всякой привязки к заданию, есть JSON файл с данными, надо представить эти данные юзеру в понятном виде, что бы юзер мог выбрать\отметить нужные ему данные нажать кнопку и эти данные сохранятся в бд, потом отобразить юзеру сохраненые данные. Я думаю во фронте загружать этот JSON файл целиком в виде какой нить формы, затем через запрос GET\POST слать выбраные юзером данные в виде опять же виде JSON в бд. и т.д.