我正在尝试加载类别(子级)以在html表中查看它们并将它们分页为:
// show category children's
public function show(subCategory $sections)
{
// Eager Loading the relationship
$sections->with('chlidrens');
// paginate the category - childrens
$result = $sections->chlidrens()->orderBy('created_at','desc')->paginate(5);
return view('CompanySections.show',compact('sections','result'));
}
我已经记录第一页的sql查询,如下所示:
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `catnodestreetable` where `id` = ? limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `customers` where `customers`.`id` = ? limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select count(*) as aggregate from `catnodestreetable` where `catnodestreetable`.`node_parent_id` = ? and `catnodestreetable`.`node_parent_id` is not null"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `catnodestreetable` where `catnodestreetable`.`node_parent_id` = ? and `catnodestreetable`.`node_parent_id` is not null order by `created_at` desc limit 5 offset 0"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `categories` where `categories`.`id` = ? limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `clothes` where `clothes`.`item_id` = ? and `clothes`.`item_id` is not null limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `clothes` where `clothes`.`item_id` = ? and `clothes`.`item_id` is not null limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `clothes` where `clothes`.`item_id` = ? and `clothes`.`item_id` is not null limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `clothes` where `clothes`.`item_id` = ? and `clothes`.`item_id` is not null limit 1"}
[2016-12-28 08:19:20] local.INFO: query {"query":"select * from `clothes` where `clothes`.`item_id` = ? and `clothes`.`item_id` is not null limit 1"}
我的问题:此代码导致N + 1 !! 如果它确实......如何解决它?
答案 0 :(得分:0)
你做的with
电话没有进一步的效果。直接运行关系方法时不会考虑它。您可以使用eager loaded constraints:
public function show(subCategory $sections)
{
$result = $sections->with(['children' => function($query) {
$query->orderBy('created_at', 'desc');
}])->paginate(5);
return view('CompanySections.show',compact('sections','result'));
}