开发者社区 问答 正文

请教下饥渴加载的问题

// 这是没用饥渴加载
$posts = Post::find('all', array('limit' => 10));
foreach ($posts as $post)
    echo $post->author->first_name;
// 这是用了饥渴加载  
$posts = Post::find('all', array('limit' => 10, 'include' => array('author')));
foreach ($posts as $post)
   echo $post->author->first_name;

这两个的区别在哪里?

展开
收起
落地花开啦 2016-02-26 17:49:33 2273 分享 版权
1 条回答
写回答
取消 提交回答
  • 喜欢技术,喜欢努力的人

    一般来说eager load是相对与lazy load,你这个例子中,在执行eager load的find的时候不仅仅查询了post表,同时会查询author表对应的记录。
    而lazy load只有在你调用的时候才去查询,也就是echo $post->author->first_name的时候触发查询。

    2019-07-17 18:48:33
    赞同 展开评论
问答地址: