Erro do Middleware
[Finalizado Pelo Aluno]
Olá,
Estou com um problema, talvez seja algo simples pois sou novo nessa área de docker e laravel...
Tentei configurar o ambiente laradock seguindo os seu passos de outros cursos para realizar este curso mas não consegui, então basicamente segui o passo-a-passo do setup-docker-laravel (https://github.com/especializati/setup-docker-laravel) pois este já tinha dado certo comigo em outros cursos, tudo estava ocorrendo bem até está aula "Aula 02 - Middleware Tenant no Laravel", no phpmyadmin tentei incluir o seguinte:
name: delivery
domain: 127.0.0.1:8989
bd_database: curso_laravel_mult_tenancy_01
bd_host: mysql
bd_username: root
bd_password: root
Após incluir, ao atualizar o localhost:8989, ocorreu o seguinte erro:
SQLSTATE[HY000] [2002] Connection refused (Connection: mysql, SQL: select * from `companies` where `domain` = localhost limit 1)
Antes havia tentando inserir os mesmos dados que você inseriu, e o dd retornou apenas null.
Aqui está parte do meu arquivo .env:
APP_NAME="Laravel Multi Tenancy Multi Database"
APP_ENV=local
APP_DEBUG=true
APP_URL=http://localhost:8989
DB_CONNECTION=mysql
DB_HOST=db
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=root
Caso quiser ver meu código, aqui está meu repositório: https://github.com/JaoJaoGo/laravel-multi-tenancy
Olá, João Víctor!
Tudo bem?
Entendi o seu caso.
Como está identificando o tenant a partir do domínio, vc precisa criar no seu arquivo de hosts os virtualhost que aponta para 127.0.0.1
Qual o seu sistema operacional?
No Mac e no Linux fica em /etc/hosts
127.0.0.1 domain01.dev
127.0.0.1 domain02.dev
Outra alteração importante, pode usar estes mesmo setup, mas precisa rodar na porta 80, mude no docker-compose.yaml e tente novamente.
Deu certo!
Acabou que o erro foi do fato da porta não ser 80 mesmo, obrigado!
Uma última dúvida do ticket também relacioado aos middlewares...
No seu arquivo web.php, está assim:
Route::get('/', function () {
return view('welcome');
});
Porém o meu não se comporta do mesmo jeito (não executa o TenantMiddleware.php). Para consertar isso, eu fiz dessa maneira:
Route::get('/', function () {
return view('welcome');
})->middleware(\App\Http\Middleware\Tenant\TenantMiddleware::class);
Por que isso ocorre?
Show, que bom que deu certo!
Isso é por conta da versão do Laravel, na versão 11, precisa registrar em bootstrap/app.php no ->withMiddleware():
https://laravel.com/docs/11.x/middleware#global-middleware
Entendi, obrigado!
Precisa estar logado para conseguir responder a este ticket!
Clique Aqui Para Entrar!