Эли4ка
14.02.2019 - 19:48
Добрый вечер. Еще одна задача. На основе MVC

(ну я так думаю).
Вот есть у нас простой бложик. Посты да комментарии. Для него мы можем сделать PostController и CommentController. Функции и у новостей и у комментариев будут одинаковые:создать, редактировать, показать, удалить (Пост|Комментарии). В общем CRUD. Ну еще есть пагинация, но это сейчас не имеет смысла. так вот, а что если у нас будет допустим сайт об автомобилях. где нужно добавлять информацию не только об автомобиле, но и его деталях и комплектующих. Ясное дело, что у комплектующих разное количество полей для заполнения. Например: двигатель-мощность, топливо и др. и колесо-диаметр, зимняя или нет и др. То есть для каждой комплектующей нужна своя таблица ибо в одной таблице суперсвалку не получится создать. Получается для каждой детали тоже могут быть такие действия:добавить, редактировать, показать, удалить. Но тогда получается для каждой комплектующей и каждой детали тоже нужно делать отдельный контроллер типа WheelController, EngineController и др. Или лучше создать один супер-пупер глобальный контроллер куда запихнуть все это? Просто я придерживаюсь первого варианта. Но то что у каждого контроллера будут повторяющие методы для разного количества параметров пока вызывает непонятки.Как лучше поступить?
arbuzmaster
14.02.2019 - 20:18
Цитата |
То есть для каждой комплектующей нужна своя таблица ибо в одной таблице суперсвалку не получится создать. |
Зачем делать таблицу для каждой комплектующей, для чего 100500 таблиц? Создайте одну таблицу Parts и в ней разместите все наименования деталей и принадлежность к марке авто. А потом у Вас например будет таблица Cars и в ней будут поля для каждой из частей (размер дисков, цвет и тд), которые вы будете присваивать каждому авто. Может я чего то не понимаю
_____________
Мой первый сайтикПосмотри на свой XBMC под другим углом
Игорь_Vasinsky
14.02.2019 - 20:33
Эли4ка
ты вот несколько раз в своих постах указывала yii, намекая на то, что у тебя есть какой-либо опыт, но по твоему данному посту - складывается совершенно обратное ощущение.
установи yii - посмотри несколько уроков.
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Эли4ка
14.02.2019 - 20:34
Я уже как-то поднимала околопохожую тему.
тут в другом загвоздка. У колеса одни параметры, у двигателя другие, у бензобака третьи. Можно конечно в общей таблице сделать примерно так:
id
parametr_name(или parametr_id,но тогда наименования параметров хранить в другой таблице, а тут держать только id)
value(тут хранить значение данного параметра)
Но это же будет свалка как мне кажется.
Эли4ка
14.02.2019 - 20:35
Цитата (Игорь_Vasinsky @ 14.02.2019 - 19:33) |
намекая на то, что у тебя есть какой-либо опыт, но по твоему данному посту - складывается совершенно обратное ощущение. |
Игорь_Vasinsky, не совсем поняла или вы про создание собственных контроллеров в yii?
Эли4ка
14.02.2019 - 20:37
P.S. знания и Эли4ка вещь не совместимые
Игорь_Vasinsky
14.02.2019 - 20:45
Возможно кто-то и пихает функционал 3х "разделов" в один контроллер и это наверно весело
По мне так намного легче поддерживать простую структуру, где 1 контроллер на раздел
Этот контроллер содержит основные методы
- index
- edit
- delete
остальное по усмотрению, например
- activate
- deactivate
У каждого раздела свой контроллер - с данным набором основных методов (иногда даже delete нет - если не предусмотрено удаление)
по поводу твоего вопроса по структуре - твой последний вариант - как ты говоришь "свалка" - такую структуру уже очень давно используют движки магазинов для хранения данных о товарах и их характеристиках (которых может быть очень много у одного товара и парочка у других)
product
-----------
id
product_id
price
quantity
param
---------
id
name
...
...
product_param
----------
product_id
param_id
value
...
...
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Эли4ка
14.02.2019 - 20:57
Игорь_Vasinsky, спасибо большое за подробный ответ. Теперь уверенности добавилось, сделаю как изначально планировала.
Игорь_Vasinsky
14.02.2019 - 21:13
да, при этом метод edit - как для сохранения новой модели, так и для обновления существующей
_____________
HTML, CSS (Bootstrap), JS(JQuery, ExtJS), PHP, MySQL, MSSql, Posgres, (TSql, BI OLAP, MDX), Mongo, Git, SVN, CodeIgnater, Symfony, Yii 2, JiRA, Redmine, Bitbucket, Composer, Rabbit MQ, Amazon (SQS, S3, Transcribe), Docker
Эли4ка
14.02.2019 - 21:36
то есть лучше не делать два (update,save) а все же один сделать?
Эли4ка
15.02.2019 - 14:48
Цитата (depp @ 15.02.2019 - 11:28) |
почитайте про EAV. |
почитаю,спасибо
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.