Я планирую разработать веб-приложение в CakePHP, которое отображает информацию в графических файлах и карты. Я выбрал CakePHP, потому что информация, которую нам нужно показать, очень структурирована, поэтому модельный подход упрощает управление данными; также у меня есть некоторый опыт работы с MVC из ASP.NET, и мне нравится, как просто использовать маршрутизацию.Управление несколькими источниками данных в CakePHP
Итак, моя проблема в том, что несколько организаций, которые могут использовать приложение, будут иметь свою собственную базу данных с другой схемой, которая нам нужна. Я не могу просто установить их строковое соединение в файле app.php, потому что их база данных не будет соответствовать моей модели.
И организация DataSource не могла вместить мою модель для многих причин: таблицы не имеют такое же имя, схема отличается, поля моего лица находятся в разнесенных таблицах, может быть, у них есть информацию в разных базах данных или в разных СУБД!
Я хочу знать, если есть способ, чтобы сделать интерфейс, который достигает этого
В таким образом, что CakePHP модель/объект может использовать данные, независимо от источника. Есть ли у вас какие-либо предложения о том, как это сделать? Имеет ли CakePHP возможность сделать это возможным? Должен ли я использовать PHP с каким-то языком разметки, например JSON или XML? Может быть, у MySQL есть утилита для преобразования данных из разных источников в представление, и я могу заставить CakePHP использовать представление вместо таблицы? Если у вас есть ответ, вы можете как можно подробнее.
Эти другие варианты возможны, если невозможно сделать интерфейс: - Используйте еще один фреймворк, который может справиться с этим проще и имеет функции, о которых я говорил выше. - Заставьте организацию изменить свою базу данных, чтобы она соответствовала моей модели (мне это не нравится, и, вероятно, они этого не сделают). - Передача данных в собственную базу данных приложения.
Дополнительная информация: Данные, указанные на рисунке, принадлежат студентам университета. В любом университете есть своя база данных со своей структурой и приложениями, использующими db, поэтому не так легко изменить структуру. Я просто хочу сделать это как можно проще любой школе, чтобы настроить свой собственный db.
EDIT: Версия CakePHP 3.2. Важным назначением является то, что ему не нужны все операции CRUD, только «чтение». Надеюсь, что решение станет проще.
Пожалуйста, посмотрите здесь https://github.com/waldemarnt/cake-multi-tenant была построена с использованием CakePHP 2.x, но я думаю, что могло бы помочь вам :) –
Пожалуйста, упомяните точную версию CakePHP, которую вы используете (слой модели/источника данных сильно изменился с помощью CakePHP 3), и пометьте свой вопрос согласованно - спасибо! – ndm
@ndm я добавил информацию, спасибо вам :) –