booted utilizando escopos globais dentro da classe de modelo. Esse método do TRecord fornece um sistema de inicialização que permite às classes Active Record executar lógica de configuração personalizada após o processo de inicialização estar completo. Como o booted é chamado apenas uma vez por classe durante todo o ciclo de vida da aplicação, ele garante que os filtros globais sejam configurados de forma consistente e eficiente, aplicando automaticamente as regras em todas as consultas ao banco de dados.
Assinatura do Método
Exemplo: Modelo Pessoa com Métodos Boot
Aqui está um exemplo completo de um modelo Pessoa que demonstra o uso do métodobooted e da aplicação de escopos globais para filtros:
Exemplos de Uso
Uso Básico (Escopos Globais Aplicados Automaticamente)
Usando withoutGlobalScopes()
Uso Avançado com Critérios Personalizados
Melhores Práticas
Quando Usar booted()
- Escopos globais: Adicionar filtros que devem se aplicar a todas as consultas
- Configuração final: Executar configurações que dependem do modelo estar totalmente inicializado
- Filtros de segurança: Configurar filtros baseados em permissões ou unidades
- Configuração de cache: Inicializar caches que dependem da estrutura do modelo
Melhores Práticas para Escopos Globais
- Use nomes descritivos: Dê aos seus escopos globais nomes descritivos
- Considere a performance: Escopos globais afetam todas as consultas, então os torne eficientes
- documente o comportamento: Documente claramente o que os escopos globais fazem
- Forneça rotas de escape: Sempre permita que desenvolvedores desabilitem escopos quando necessário
Casos de Uso Comuns
Aplicações Multi-tenant
Implementação de Exclusão Lógica (Soft Delete)
Controle de Acesso Baseado em Função
Notas Importantes
- Chamado uma vez por classe: O método booted é chamado apenas uma vez durante o ciclo de vida da aplicação
- Herança: Sempre chame
parent::booted()ao sobrescrever - Dependência de sessão: Tenha cuidado ao usar valores de sessão em
booted()- certifique-se de que a sessão esteja disponível - Impacto na performance: Escopos globais afetam todas as consultas, então os projete cuidadosamente
- Testes: Lembre-se de considerar escopos globais em seus testes, ou desabilitá-los quando necessário