将“懒加载”改为“预加载”
zozero
5年前
修改理由:
相关信息:
- 类型:文档文章
- 文章: 模型关联
- 文档: 《Laravel 5.7 中文文档(5.7)》
此投稿已在 5年前 合并。
内容修改:
Old | New | Differences |
---|---|---|
769 | 769 | } |
770 | 770 | ``` |
771 | 771 | |
772 | 动态属性就像「 | |
772 | 动态属性就像「预加载」,也就是说当你确实会使用到它们的使用,它会自动进行加载。由于这一特性,开发者经常会使用到 [预加载](#eager-loading) 去实现那些在获取到模型后必须要加载的关联模型。预加载对 那些在模型上定了关联关系 SQL 查询上有了性能的提升,它们对 SQL 查询语句的执行次数有了明显的减少(也就是 n + 1性能问题)。 | |
773 | 773 | |
774 | 774 | <a name="querying-relationship-existence"></a> |
775 | 775 | ### 查询关联关系是否存在 | … | … |
866 | 866 | echo $posts[0]->pending_comments_count; |
867 | 867 | ``` |
868 | 868 | <a name="eager-loading"></a> |
869 | ## | |
870 |
| |
871 | 当通过动态属性的方法去加载关联数据时,它已经是在 「 | |
869 | ## 预加载 | |
870 | ||
871 | 当通过动态属性的方法去加载关联数据时,它已经是在 「预加载」 了。也就是说,当你在未使用到该关联数据时,它其实是并没有查询数据的。然而, 当你在查询父级模型时, Eloquent 允许渴求式加载关联数据,渴求式加载避免了 N + 1 查询问题。为了说明 N + 1 的查询问题,思考 `Book` 模型关联了 `Auhtor` : | |
872 | 872 | |
873 | 873 | ```php |
874 | 874 | <?php | … | … |
965 | 965 | ``` |
966 | 966 | |
967 | 967 | <a name="lazy-eager-loading"></a> |
968 | ### | |
968 | ### 预加载 | |
969 | 969 | |
970 | 970 | 有可能你还希望在模型加载完成后在进行渴求式加载。举例来说,如果你想要动态的加载关联数据,那么 `load` 方法对你来说会非常有用: |
971 | 971 |