Skip to main content
Os filtros globais só podem ser definidos através do método 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étodo booted 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

  1. Use nomes descritivos: Dê aos seus escopos globais nomes descritivos
  2. Considere a performance: Escopos globais afetam todas as consultas, então os torne eficientes
  3. documente o comportamento: Documente claramente o que os escopos globais fazem
  4. 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

Depuração

Para depurar métodos boot e escopos globais:

Integração com Mad Builder Framework

O Mad Builder fornece funcionalidades adicionais que podem ser utilizadas no método booted: