Генерация таблиц и соответствующих моделей с использованием cakePHP - PullRequest
0 голосов
/ 03 декабря 2010

Мое приложение позволяет пользователям (администраторам) создавать свои собственные формы, и у каждой формы должна быть соответствующая таблица для хранения этой информации.Поэтому, когда бы ни создавалась форма, мне нужно было бы сгенерировать таблицу в базе данных для этой формы на основе ее типа ввода и возможного значения.

Создание таблицы можно выполнить с помощью метода $this->Model->query('create table ....'), ноодна вещь, которую я не могу понять, это то, как я позже сгенерирую модель для соответствующей таблицы?

Буду признателен за любую помощь по этому поводу.

Ответы [ 2 ]

6 голосов
/ 06 декабря 2010

Вы не должны создавать самоизменяющееся приложение. Это скоро станет головной болью, хотя бы с точки зрения оптимизации. Еще хуже, чем динамическое изменение базы данных, является динамическое создание моделей. Не делай этого.

Если ваша цель - создать приложение, позволяющее пользователям создавать формы, вам придется создать мета-приложение, которое хранит информацию о формах и схемах в виде данных в базе данных.

id | form_id | field_name | field_type | length | ...
---+---------+------------+------------+--------+----
1  | 42      | firstname  | string     | 255    | ...
2  | 42      | lastname   | string     | 255    | ...
...

На основе этой мета-информации вам нужно динамически создавать фактические формы и сохранять входные данные аналогичным мета-образом в вашей базе данных.

Если вы не пытаетесь сделать клон phpMyAdmin для администрирования базы данных , это единственный реалистичный способ. Если вы пытаетесь создать приложение для администрирования базы данных , вы не будете создавать модели динамически, а просто будете использовать одну модель управления базами данных , что будет довольно много всего через $this->query().

В любом случае, вы создаете мета-приложение, что часто является плохой идеей. Вы пытаетесь передать работу программистов (проектирование и создание баз данных и форм) пользователям, которые неизбежно будут выполнять работу хуже. Это, конечно, просто мое скромное мнение, я не знаю, в чем дело.

0 голосов
/ 08 декабря 2010

Как насчет использования $ this-> Model-> query для создания таблицы, а затем Bake для создания представлений / моделей / контроллеров? Учитывая, что вам нужен только базовый CRUD. Но я согласен, что это скоро станет недостижимым.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...