laravel中默认查询是使用懒加载的,比如说查询关联关系的两个表artical和cate,
查询artical后,再指向cate查询,就会生成一条查询语句,如果这个cate查询是在循环内,就会产生n+1问题。
laravel里面使用with来解决这个问题。
n+1问题sql语句:
select * from foo where id = 1 limit 1;
select * from foo where id = 2 limit 1;
select * from foo where id = 3 limit 1;
...
使用with来解决n+1问题生成的语句:
select * from foo where id in(1,2,3);
- 当只查询一个文章的一个分类时,可以使用懒加载。
- 当需要查询多个文章的分类时,使用预加载更好。