作者:只被你耐_396 | 来源:互联网 | 2014-05-16 09:11
// 获取 ID 为 10 的帖子
$post=Post::model()->findByPk(10);
// 获取帖子的作者(author): 此处将执行一个关联查询。
$author=$post->author;
用模型的属性的方式加载关联属性数据,则为
懒惰式加载,仅当第一次访问关联属性时,才进行查询加载。
加入一次性要访问的数据比较多,比如一个表格中,若干干行的数据都是此关联属性。那么懒惰式加载将非常影响效率。
因为每个关联属性,都会单独的去查询一次数据库。
这时候就应该考虑采用“
渴求式加载”,比如:
$posts=Post::model()->with('author')->findAll();
上述代码将返回一个 Post 实例的数组。与懒惰式加载方式不同,在我们访问每个 Post 实例中的 author 属性之前,它就已经被关联的 User 实例填充了。 渴求式加载通过 一个 关联查询返回所有帖子及其作者,而不是对每个帖子执行一次关联查询。