Laravel中的“载荷()方法”专门设计用于与雄辩的模型关系。它仅在雄辩模型上急切地加载该关系时,它有条件地包括API资源响应中的关系数据。此方法有助于避免不必要的数据库查询,并在实际加载时仅包括相关数据,使API响应保持倾斜。
###``wherloaded()的用法上下文
`'
- 雄辩的模型和关系:`何时载荷()如果加载了关系,它将返回相关数据;否则,它不返回或默认值。此行为与雄辩的内部方法`relationloaded()紧密结合,该方法确定了是否可以在模型实例[1] [7] [8]上使用关系数据。
- API资源:基于关系是否渴望加载,改善性能并避免n+1查询问题[1] [8],它通常在Laravel API资源类中使用,以有条件地包括相关资源或收集。
###可以与第三方库一起使用``loaded()`吗?
- 雄辩模型之外没有直接的支持:因为`wherloaded()`依赖于雄辩的模型的内部状态来检查是否加载了关系(`relationloaded()`方法),它固有地用于雄辩的模型及其关系。不扩展或模仿雄辩模型及其关系加载机制的第三方库不能直接使用`naleded()`。
- 解决方法:如果第三方库返回不是雄辩模型的对象或集合,则不能使用`noaded()`as-is。您需要手动实现类似的条件逻辑,或将这些对象包裹在模仿行为的自定义资源中。另外,您可以手动检查是否存在相关数据,然后将其包含在响应中。
### 概括
- `当loaded()`构建用于专门与雄辩的模型及其负载关系一起使用。
- 这取决于雄辩的内部关系加载状态,因此不能直接与不使用雄辩模型的第三方库一起使用。
- 要有条件地包含来自第三方资源的相关数据,您必须实施自己的条件检查或资源包装器。
这使得```当''()``一个强大的工具,用于优化Laravel API响应,但仅限于雄辩的ORM上下文[1] [7] [8]。
引用:
[1] https://henestrosa.dev/blog/how-to-use-whenloaded-inlavel-laravel-api-resources
[2] https://laracasts.com/discuss/channels/laravel/api-resource-using-count-with-whensed
[3] https://laravel.com/docs/12.x/eloquent-resources
[4] https://stackoverflow.com/questions/76828050/how-to-to-get-a-single-field-field-from-a-laravel-whenloaded-resource
[5] https://www.youtube.com/watch?v=ls7m14ecasu
[6] https://stackoverflow.com/questions/66675594/can-i-i-is--i--i--i--i--instead-load-load-laravel-eloquent
[7] https://laraveldaily.com/post/laravel-api-resources-realations-when-hen-hendods
[8] https://laravel-news.com/whenloaded