Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Pode quando carregado () ser usado com bibliotecas de terceiros ou apenas com modelos eloquentes


Pode quando carregado () ser usado com bibliotecas de terceiros ou apenas com modelos eloquentes


O método `when whenloaded ()` em Laravel é projetado especificamente para funcionar com relacionamentos modelo eloquentes. Inclui condicionalmente dados de relacionamento nas respostas dos recursos da API somente se o relacionamento tiver sido carregado no modelo eloquente. Esse método ajuda a evitar consultas de banco de dados desnecessárias e mantém as respostas da API se engula, incluindo apenas dados relacionados quando realmente são carregados.

contexto de uso de `when whenloaded ()`

- Modelos e relacionamentos eloqüentes: `Quando carregado ()` verifica se um relacionamento em um modelo eloqüente foi carregado usando métodos como `com ()` ou `load ()`. Se o relacionamento for carregado, ele retornará os dados relacionados; Caso contrário, ele não retorna nada ou um valor padrão. Esse comportamento é fortemente acoplado ao método interno do eloqüente `RelatioLaaded ()` que determina se os dados de relacionamento estão disponíveis na instância do modelo [1] [7] [8].

- Recursos da API: é comumente usado nas classes de recursos da API do Laravel para incluir condicionalmente recursos ou coleções com base no fato de os relacionamentos estarem carregados, melhorando o desempenho e evitando o problema de consulta N+1 [1] [8].

pode `quando carregado ()` ser usado com bibliotecas de terceiros?

- Nenhum suporte direto fora dos modelos eloquentes: como `quando carregado ()` confia no estado interno do modelo eloqüente para verificar se um relacionamento é carregado (`` relação de relações () `método), é inerentemente projetado para modelos eloqüentes e seus relacionamentos. Bibliotecas de terceiros que não estendem ou imitam modelos eloquentes e seus mecanismos de carregamento de relacionamento não podem usar diretamente `quando carregados ()`.

-Solução alternativa: se uma biblioteca de terceiros retornar objetos ou coleções que não são modelos eloquentes, você não pode usar `quando carregado ()` AS-IS. Você precisaria implementar a lógica condicional semelhante manualmente ou envolver esses objetos em um recurso personalizado que imita o comportamento. Como alternativa, você pode verificar manualmente se os dados relacionados estão presentes antes de incluí -los na resposta.

Resumo

- `Quando carregado ()` é construído para trabalhar exclusivamente com modelos eloquentes e seus relacionamentos carregados.
- Depende do estado de carregamento de relacionamento interno do Eloquent, por isso não pode ser usado diretamente com bibliotecas de terceiros que não usam modelos eloquentes.
- Para incluir dados condicionalmente relacionados de fontes de terceiros, você deve implementar suas próprias verificações condicionais ou invólucros de recursos.

Isso faz com que `quando carregado ()` uma ferramenta poderosa para otimizar as respostas da API do Laravel, mas limitada ao contexto eloquente ORM [1] [7] [8].

Citações:
[1] https://henestrosa.dev/blog/how-to-use-whenloaded-in-laravel-api-resmources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-count-with-whenloaded
[3] https://laravel.com/docs/12.x/eloquent-sources
[4] https://stackoverflow.com/questions/76828050/how-to-get-gingle-field-from-a-laravel-whenloaded-resource
[5] https://www.youtube.com/watch?v=LS7M14ecasu
[6] https://stackoverflow.com/questions/66675594/can--i-use-with-insead-load--laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-relações-when-methods
[8] https://laravel-news.com/whenloaded