Хорошо, мой первый вопрос был изменен так много раз, что я решил удалить его и переформулировать мой вопрос. Я разработал небольшой тестовый проект с разными именами моделей, чтобы найти подходящее решение для моей проблемы.
Предупреждение. Не смешивайте базы данных с таблицами
Мотивация. Я разделил пользовательские данные на несколько баз данных для юридических и проблем с производительностью.
В настоящее время я работаю над проектом CakePHP, который имеет несколько User
, и каждый User
имеет собственную базу данных с несколькими таблицами. > (cars
является одной из таблиц). Теперь мне нужно сначала что-то объяснить:
Каждая User
имеет свою собственную базу данных (а не таблицу, базу данных), поэтому имена базы данных выглядят следующим образом.
- [DATABASE]
app
(Это основная база данных приложения)- [TABLE]
users
- [TABLE]
permissions
(Не относится к этому вопросу)
- [TABLE]
- [DATABASE]
app_user1
(User.id
1 владеет всей этой базой данных)- [TABLE]
cars
(a таблица, полностью принадлежащаяUser.id
1)
- [TABLE]
- [DATABASE]
app_user2
(User.id
2 владеет всей этой базой данных)- [TABLE]
cars
(a таблица полностью принадлежитUser.id
2)
- [TABLE]
- и т.д...
Я сделал небольшой чертеж, который может прояснить базу данных/ таблица -definitions и их отношения к моделям:
Проблема!!!
Я не знаю, к какой базе данных подключиться, пока User
не войдет в систему. User
и их базы данных создаются динамически, поэтому я не могу использовать app/Config/database.php
.
Итак, я сейчас пишу расширение в классах Model
и ConnectionManager
, чтобы обойти поведение базовой базы CakePHP. Таким образом, модель Car
знает, какую базу данных использовать. Но я просто чувствую, что это можно сделать легче!
Итак, я думаю, все это сводится к одному вопросу:
Есть ли более простой способ сделать это?!
Спасибо всем, кто потратит время и силы на чтение и понимание моей проблемы!