Создайте новую таблицу для каждого типа контента $ в CakePHP

Описание цели

Пытаюсь сделать CMS (для внутреннего пользования, но на многих сайтах) с CakePHP.

Я хотел бы иметь общую модель Content, а затем иметь много различного пользовательского контента types.

Это было бы просто сделать, но моя единственная таблица contents в конечном итоге стала бы огромной, если бы в ней был каждый фрагмент контента на сайте. Я хотел бы разделить его на таблицы, чтобы упростить время запроса/скорость сайта... и т. д.

Моя мысль (не уверена, что это возможно) состояла бы в том, чтобы каким-то образом сообщить CakePHP, что если поле type содержимого является «статьей», то оно должно использовать таблицу content_articles... и т. д. Эти таблицы будут генерироваться afterSave (я полагаю) при создании новый content_type.

Было бы неплохо дать им варианты того, какие поля будет использовать конкретный тип контента - даже управлять этим, добавляя/удаляя поля... и т. д., а затем только генерировать эти поля в таблице и каким-то образом выполнять их проверку на основе content_fields данные таблицы.

//my thoughts on tables:    
content_types //id, name, description, use_table
content_fields //id, name, content_type_id, required, field_type, max_chars
content_articles //generated by code
content_people //generated by code

Вопросы:

Это вообще возможно? Есть ли лучшие способы сделать это?


person Dave    schedule 02.07.2012    source источник


Ответы (1)


Возможно, вы используете таблицу значений ключа для контента, а не стандартную таблицу? Плагин utils от CakeDC может сделать именно это с поддерживаемой СУБД.

Или вы можете настроить эту модель на использование источника данных «ключ-значение», такого как MongoDB, что является отличным вариантом использования NoSQL. Я бы, вероятно, выбрал этот подход, если вы говорите о массивных хранилищах ключевых значений и меняющейся схеме. На github есть плагин для MongoDb.

person Scott Harwell    schedule 21.07.2012