php – Laravel 4.1:如何分享雄辩的渴望关系?
有一个关于老L3渴望加载的分页的问题,没有使用雄辩.但是,我想用雄辩的方式,用分页的方式来加载关系.
主要模式:与职位有一对多关系的主题, public function findById($id) { return $this->topic->with('posts','posts.user','posts.user.profile') ->find($id); } 后来我循环显示所有的结果,但是它们没有分页: @foreach($topic->posts as $post) ... unpaginated content ... @endforeach 所以,我可以做一个解决方法,并单独选择所有具有$id的主题的帖子,并使用 – > paginate()而不是 – > get(),并将分页$pots, >但是有可能使用分页的热心关系帖子吗?那怎么办呢?
澄清一些东西:分页热切的关系有点误解.渴望加载的要点是尽可能少的查询检索所有关系.如果要检索10个主题,所有这些主题都有35个帖子,则只需要两个查询.甜!
也就是说,分配一个渴望的关系不会奏效.考虑两种情况: >您想要检索和列出主题,也许列出每个主题的前五个帖子.大!渴望加载是完美的.现在,你不想在这样的页面上分页热门的帖子,所以没关系. 也就是说,有两个潜在的解决方案: 选项1:创建一个分页雄辩关系的自定义访问器. /** * Paginated posts accessor. Access via $topic->posts_paginated * * @return IlluminatePaginationPaginator */ public function getPostsPaginatedAttribute() { return $this->posts()->paginate(10); } 优点:分页非常容易;不干涉正常职位关系. 选项2:分页信息由热切关系返回的集合. /** * Paginated posts accessor. Access via $topic->posts_paginated * * @return IlluminatePaginationPaginator */ public function getPostsPaginatedAttribute() { $posts = $this->posts; // Note that you will need to slice the correct array elements yourself. // The paginator class will not do that for you. return Paginator::make($posts,$posts->count(),10); } 优点:使用热切的关系;不会创建其他查询.缺点:不管当前页面(慢),都必须检索所有元素;必须手动构建当前页面元素. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |