У меня есть многоклиентское приложение PHP, которое я написал. Это приложение имеет много объектов базы данных, как и любое другое приложение PHP. Но поскольку это многоклиентское приложение, каждый раз, когда мы подключаем нового клиента, у меня разные требования к клиенту. Есть пара общих объектов (они же учетные записи), в которых хранится большая часть клиентской информации. Но самое главное, каждый раз, когда я хочу добавить нового клиента в базу данных, этому новому клиенту потребуется новый столбец в добавленных базах данных учетных записей, потому что они будут иметь некоторые уникальные данные. Существуют стандартные обязательные данные (например, имя_учетной записи, статус...), но некоторые данные уникальны и помечены по-разному в зависимости от типа бизнеса клиента.
В настоящее время то, что я должен сделать, чтобы удовлетворить требования,
- Измените таблицу учетных записей и добавьте этот новый столбец вручную.
отредактируйте PHP-скрипт, где я отображаю информацию об учетной записи и отображаю содержимое поля так
if(!empty($row['new_filed'])) echo 'Обязательное поле для одного клиента: ' . $строка['новый_файл'];
если поле доступно для редактирования, то мне нужно добавить правила в форму редактирования/добавления, чтобы выполнить проверку проверки данных перед сохранением.
Я пытаюсь создать интерфейсный инструмент, который будет делать это автоматически. Таким образом, я могу попросить администратора «не программиста» перейти к интерфейсному инструменту и добавить новое поле, и это поле будет отображаться в выбранном разделе выбранной страницы.
С помощью внешнего инструмента я хочу иметь возможность добавить настраиваемое поле с именем «brand_c» и сделать его типа varchar (100). Затем на странице под названием «account_info.php» в разделе «Другое» отобразите это поле с меткой «Бренд», только если клиент = «XYZ», поэтому, если данные принадлежат клиенту «ABC», не отображайте данные, так как этот столбец является пользовательским только для «XYZ».
Я понимаю, что это широкий вопрос, но я ищу любую помощь в том, как такую вещь можно построить (с чего начать?). Это то, что делает большинство крупных CRM, например, Microsoft CRM Dynamic, Salesforce.com ...) имеют это. Как я могу спроектировать что-то подобное?
Спасибо