Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon WhenLoaded ()는 타사 라이브러리 또는 웅변적인 모델에서만 사용할 수 있습니까?


WhenLoaded ()는 타사 라이브러리 또는 웅변적인 모델에서만 사용할 수 있습니까?


Laravel의`WhenLoaded ()`메소드는 웅변적인 모델 관계와 함께 작동하도록 특별히 설계되었습니다. 웅변 모델에 관계가 열망하는 경우에만 API 자원 응답의 관계 데이터가 조건부로 포함됩니다. 이 방법은 불필요한 데이터베이스 쿼리를 피하고 실제로로드 된 경우 관련 데이터 만 포함하여 API 응답을 유지하는 데 도움이됩니다.

whenloaded ()`의 사용 컨텍스트

- 웅변 모델 및 관계 :`whenloaded ()`with ()`또는`load ()`와 같은 메소드를 사용하여 웅변 모델의 관계가로드되었는지 확인합니다. 관계가로드되면 관련 데이터를 반환합니다. 그렇지 않으면 아무것도 또는 기본값을 반환합니다. 이 동작은 Eloquent의 내부 메소드`relanspitionloaded ()`와 밀접하게 결합되어 모델 인스턴스에서 관계 데이터를 사용할 수 있는지 결정합니다 [1] [7] [8].

- API 리소스 : Laravel API 리소스 클래스 내에서 일반적으로 관계가 열망하는지, 성능 향상 및 N+1 쿼리 문제를 피하는지에 따라 관련 리소스 또는 컬렉션을 조건부로 포함하는 데 일반적으로 사용됩니다 [1] [8].

###`whenloaded ()

타사 라이브러리와 함께 사용할 수 있습니까?

- 웅변 모델 이외의 직접 지원 없음 :`whenloaded ()
``메소드도 "를 확인하기 위해``whenloaded ()
``"methoyaye은``methods (`relationloaded ()`methods는``methods``methods
`relationloaded () 메소드)가``whenloaded ()`는 웅변 모델의 내부 상태에 의존하기 때문에 본질적으로 설계되었습니다. 웅변적인 모델을 확장하거나 모방하지 않는 타사 라이브러리와 관계 로딩 메커니즘은`whenloaded ()`를 직접 사용할 수 없습니다.

-해결 방법 : 타사 라이브러리가 웅변적인 모델이 아닌 개체 또는 컬렉션을 반환하는 경우`whenloaded ()`as-is를 사용할 수 없습니다. 유사한 조건부 논리를 수동으로 구현하거나 해당 객체를 동작을 모방하는 사용자 정의 리소스로 랩핑해야합니다. 또는 관련 데이터를 응답에 포함시키기 전에 관련 데이터가 있는지 수동으로 확인할 수 있습니다.

### 요약

-`whenloaded ()`는 웅변적인 모델과로드 된 관계와 독점적으로 작동하도록 만들어졌습니다.
- Eloquent의 내부 관계 로딩 상태에 따라 달라 지므로 Eloquent 모델을 사용하지 않는 타사 라이브러리와 직접 사용할 수 없습니다.
- 제 3 자 출처의 관련 데이터를 조건부로 포함하려면 조건부 점검 또는 리소스 포장지를 구현해야합니다.

이로 인해`whenloaded ()
Laravel API 응답을 최적화하기위한 강력한 도구이지만 웅변적인 ORM 컨텍스트 [1] [7] [8]로 제한됩니다.

인용 :
[1] https://henestrosa.dev/blog/how-to-ous-whenloaded-in-laravel-api-resources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-count-withwhenloaded
[3] https://laravel.com/docs/12.x/eloquent-resources
[4] https://stackoverflow.com/questions/76828050/how-to-get-a-single-field-a-laravel whenloaded-resource
[5] https://www.youtube.com/watch?v=ls7m14ecasu
[6] https://stackoverflow.com/questions/66675594/can-i-us-with-instead-laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-relations-when-methods
[8] https://laravel-news.com/whenloaded