Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon ロードされたとき()はサードパーティライブラリで使用するか、雄弁なモデルでのみ使用できます


ロードされたとき()はサードパーティライブラリで使用するか、雄弁なモデルでのみ使用できます


`whenloaded()` laravelのメソッドは、雄弁なモデル関係で動作するように特別に設計されています。 APIリソース応答の関係データは、関係が雄弁モデルに熱心にロードされている場合にのみ含まれます。この方法は、不必要なデータベースクエリを回避するのに役立ち、実際にロードされた場合に関連するデータのみを含めることにより、API応答を無駄のないままにします。

`aynoloded()`の使用コンテキスト

- 雄弁なモデルと関係: `whenloaded()` eloquentモデルの関係が `with()`または `load()`などの方法を使用してロードされているかどうかをチェックします。関係がロードされている場合、関連データを返します。それ以外の場合は、何も返しません。デフォルト値は返されます。この動作は、Eloquentの内部メソッド `関係ロード()`と密接に結びついています。これは、関係データがモデルインスタンス[1] [7] [8]で利用可能かどうかを決定します。

-APIリソース:Laravel APIリソースクラス内で一般的に使用され、関係が熱心であるかどうかに基づいて関連するリソースまたはコレクションを条件付きに含め、パフォーマンスを改善し、N+1クエリの問題を回避します[1] [8]。

`ayedloaded()`サードパーティライブラリで使用できますか?

- 雄弁さモデル以外の直接的なサポートはありません: `reloaded()`は雄弁さモデルの内部状態に依存して、関係がロードされているかどうかを確認するため( `relationloaded()`メソッド)、雄弁さモデルとその関係のために本質的に設計されています。雄弁さモデルとそれらの関係負荷メカニズムを拡張または模倣しないサードパーティライブラリは、 `ayed()`を直接使用することはできません。

- 回避策:サードパーティライブラリが雄弁なモデルではないオブジェクトまたはコレクションを返す場合、 `as-as-isを使用することはできません。同様の条件付きロジックを手動で実装するか、動作を模倣するカスタムリソースでそれらのオブジェクトをラップする必要があります。または、応答に含める前に関連データが存在するかどうかを手動で確認できます。

### まとめ

- `whenloaded()`は、雄弁なモデルとそのロードされた関係でのみ動作するように構築されています。
- Eloquentの内部関係の負荷状態に依存するため、Eloquentモデルを使用しないサードパーティライブラリでは直接使用することはできません。
- サードパーティのソースからの関連データを条件付きで含めるには、独自の条件付きチェックまたはリソースラッパーを実装する必要があります。

これにより、 `reloaded()`がLaravel API応答を最適化するための強力なツールになりますが、Eloquent ORMコンテキスト[1] [7] [8]に限定されます。

引用:
[1] https://henestrosa.dev/blog/how-to-use-whenloaded-in-laravel-api-resources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-count-with-whenloaded
[3] https://laravel.com/docs/12.x/​​eloquent-resources
[4] https://stackoverflow.com/questions/76828050/how-to-get-a-single-field-from-a-laravel-whenloaded-resource
[5] https://www.youtube.com/watch?v=ls7m14ecasu
[6] https://stackoverflow.com/questions/666755594/can-iuse-with-instead-loave-laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-lestion--メソッドの場合
[8] https://laravel-news.com/whenloaded