I have a multi-tenancy application that I am developing and I’m nearly there.
Currently I am using one database per customer – copying it each time and naming depending based on $_SERVER[‘http_host’]…
A lot of the tables each database never change, and contain the same information.
I would like to have a main application database that contains this information, including a list of clients and what there database is called. This database would then be used to select the correct customers database…
Is this possible and can anyone point me in the direction of a suitable tutorial?
Thanks
OK, so you’ll need different database configs for your “administrative” database and your “customer” databases.
Use the examples from this page to generate those separate configs:
http://ellislab.com/codeigniter/user_guide/database/configuration.html
Then, in your main controller (please tell me your extending a MY_Controller.php and not just using CI_Controller.php), you’ll want to read your ‘admin’ database and get all client information. You’ll then want to generate a
$configarray for this client database and reload the database with the new$configarray:You’ll then have a connection to the client database.
Note
If you’ll need to connect to both databases back and forth, then you can connect to multiple databases as explained on this page: http://ellislab.com/codeigniter/user_guide/database/connecting.html