You may customize how a tenant's DB connection is constructed by storing specific internal keys on the tenant.
If you changed the internal prefix on the tenant model, then use that instead of
Specifying database names
You may specify the tenant's database name by setting the
tenancy_db_name key when creating the tenant.
Tenant::create([ 'tenancy_db_name' => 'acme', ]);
When you don't specify the tenant's database name, it's constructed using:
tenancy.database.prefix config + tenant id +
Therefore, another way to specify database names is to set the tenant id during creation, rather than letting it be randomly generated:
Tenant::create([ 'id' => 'acme', ]);
Specifying database credentials
Database user & password are only created when you use the permission controlled MySQL database manager. See the database config for more info.
You may specify the username and password for the user that will be created along with the tenant database.
Tenant::create([ 'tenancy_db_username' => 'foo', 'tenancy_db_password' => 'bar', ]);
The user will be given the grants specified in the
PermissionControlledMySQLDatabaseManager::$grants array. Feel free to customize this by setting it to a different value like any other public static property.
Note that you don't want to grant the users the ability to grant themselves more grants.
Specifying template connections
Important: there should be no
config/database.php. If you create a template connection for tenants, name it something like
tenantconnection is entirely managed by the package and gets reset to
nullwhen tenancy is ended.
To specify the connection that should be used to construct this tenant's database connection (the array like you'd find in
config/database.php), set the
tenancy_db_connection key. Otherwise, the connection whose name is in the
tenancy.database.template_connection config will be used. If that key is null, the central connection will be used.
Specifying other connection details
You may also set specific connection details without necessarily creating a new connection. The final "connection array" will be constructed by merging the following:
- the template connection
- the database name
- optionally, the username and password
This means that you can store a value for e.g.
tenancy_db_charset if you want to specify the charset for the tenant's database connection for whatever reason.