CakePHP / SQL динамическое создание таблиц и отношений, мне нужен лучший подход - PullRequest
0 голосов
/ 04 сентября 2011

У меня есть вопрос о CakePHP и базах данных относительно моей идеи приложения. Я до сих пор только на первых строках кода, но я пытаюсь придумать, что для этого потребуется от CakePHP. Одна из вещей, которые я понял, состоит в том, что структура этого приложения потребует создания таблицы времени выполнения, которая не будет работать, потому что мне нужно печь.

Позвольте мне объяснить. Там родительский объект называется списком. Список имеет много представлений, он также имеет много комментариев. В основном пользователи отправляют элемент в родительский список, и они также могут комментировать родительский список. У меня проблемы с выяснением, как я все это структурирую.

Моей первой мыслью было создать таблицу, содержащую строку для каждого списка, с его основными свойствами. Затем две таблицы в списке, содержащие списки представлений и комментариев Я не уверен, какое отношение должны иметь таблица комментариев и представления к строке в таблице списков, содержащей родительскую информацию, внешний ключ?

Проблема с этим подходом состоит в том, что когда пользователь создает новый список, для этого потребуется создать две новые таблицы, связанные с этим списком. Я не вижу, что это возможно в CakePHP из-за необходимости выпечки для создания структуры торта. Моя другая мысль состояла в том, что если бы Cake позволил мне получить доступ к произвольным таблицам без установленных моделей, я мог бы получить доступ ко всему, но тогда мне пришлось бы определять все отношения в каждой точке, на которую я полагаюсь.

Я не совсем уверен, как подойти к этому, любая помощь приветствуется.

1 Ответ

4 голосов
/ 04 сентября 2011

Вам не нужно добавлять новые таблицы каждый раз, как вы предложили выше.У вас должно быть 3 таблицы: lists, list_submissions и list_comments.Когда кто-то добавляет список, вы добавляете строку в таблицу lists.list_submissions и list_comments должны иметь поле list_id в качестве внешнего ключа, поэтому при добавлении нового комментария или представления просто сохраните идентификатор списка, которому он принадлежит, в соответствующей таблице.Ваши ListSubmission и ListComment должны иметь отношение «принадлежит» с моделью List.

...