Olá pessoa! Terminei o curso faz um tempo, comecei um projeto pessoal, e agora me vêm certas dúvidas. Estou criando alguns métodos de criação de databases e migração delas, são databases dos Clientes, que é um model. Primeira dúvida, é mais organizado criar um DatabaseController para gerenciar? Métodos que não retornem views, devem ficar em um Model ou posso deixar no Controller?
Vocês têm algum local onde tenham dicas do que colocar e o que não colocar em cada um?
Vou anexar os meus códigos para vcs darem uma olhada, o código abaixo está em um ClienteController:
private function iniciarBancoCliente(Cliente $cliente)
{
//Migra um banco vazio
$this->migrarBancoCliente($cliente);
ClienteController::setTenantDatabaseName("");
}
//Migra o banco do parâmetro cliente
private function migrarBancoCliente(Cliente $cliente)
{
ClienteController::setTenantDatabaseName($cliente->database_name);
Artisan::call('migrate',['--database'=>'mysql_tenant','--path'=>'app/database/migrations/tenant']);
DB::disconnect('mysql_tenant');
}
//Atualização dos bancos
private function atualizarTodosBancosClientes()
{
$clientes = Cliente::all();
foreach($clientes as $cliente){
$this->migrarBancoCliente($cliente);
}
ClienteController::setTenantDatabaseName("");
}
public static function setTenantDatabaseName($name)
{
Config::set('database.connections.mysql_tenant.database', $name);
}