Вы не должны создавать самоизменяющееся приложение. Это скоро станет головной болью, хотя бы с точки зрения оптимизации. Еще хуже, чем динамическое изменение базы данных, является динамическое создание моделей. Не делай этого.
Если ваша цель - создать приложение, позволяющее пользователям создавать формы, вам придется создать мета-приложение, которое хранит информацию о формах и схемах в виде данных в базе данных.
id | form_id | field_name | field_type | length | ...
---+---------+------------+------------+--------+----
1 | 42 | firstname | string | 255 | ...
2 | 42 | lastname | string | 255 | ...
...
На основе этой мета-информации вам нужно динамически создавать фактические формы и сохранять входные данные аналогичным мета-образом в вашей базе данных.
Если вы не пытаетесь сделать клон phpMyAdmin для администрирования базы данных , это единственный реалистичный способ. Если вы пытаетесь создать приложение для администрирования базы данных , вы не будете создавать модели динамически, а просто будете использовать одну модель управления базами данных , что будет довольно много всего через $this->query()
.
В любом случае, вы создаете мета-приложение, что часто является плохой идеей. Вы пытаетесь передать работу программистов (проектирование и создание баз данных и форм) пользователям, которые неизбежно будут выполнять работу хуже. Это, конечно, просто мое скромное мнение, я не знаю, в чем дело.