84669 person learning
152542 person learning
20005 person learning
5487 person learning
7821 person learning
359900 person learning
3350 person learning
180660 person learning
48569 person learning
18603 person learning
40936 person learning
1549 person learning
1183 person learning
32909 person learning
查询文章列表同时查询文章的作者信息,如何关联查询,我写了一个用1对1的关系在模型了,在视图中调用,虽然可行,但是出来查询语句很多条查询作者的语句,怎么一次查询出来
闭关修行中......
像下边这样的查询和遍历,如果返回10条article数据,则一共会执行11次SQL语句,第一条是一次性查询所有10条article数据,另外每次遍历都会执行一次获取相应author数据的SQL查询(原因是Eloquent默认为Lazy Loading,访问关系数据的时候才进行查询操作)。
article
SQL
author
Eloquent
Lazy Loading
$articles = App\Article::all(); foreach ($articles as $article) { echo $article->author->name; }
如果使用 Eager Loading,像下边这样,则一次性执行一次SQL查询。
Eager Loading
$articles = App\Article::with('author')->get(); foreach ($articles as $article) { echo $article->author->name; }
短答案:你需要使用Eager Loading
长答案:
像下边这样的查询和遍历,如果返回10条
article
数据,则一共会执行11次SQL
语句,第一条是一次性查询所有10条article
数据,另外每次遍历都会执行一次获取相应author
数据的SQL
查询(原因是Eloquent
默认为Lazy Loading
,访问关系数据的时候才进行查询操作)。如果使用
Eager Loading
,像下边这样,则一次性执行一次SQL
查询。