大佬教程收集整理的这篇文章主要介绍了渴望加载深层嵌套的关系?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_502_0@
Trainers -> hasmany -> programs
programs -> hasmany -> weeks
weeks -> hasmany -> days
days -> hasmany -> sessions
sessions -> hasmany -> phases
phases -> hasmany -> excersises
@H_502_0@相反方向的关系都对运动阶段有一个接受,这也有很多
@H_502_0@
$programs = $this->program->orderBy('TrainerId', 'asc')->take(1)->with('weeks.days')->get();
@H_502_0@我需要能够检索整个程序的内容,并且我认为我可以急于加载每个嵌套关系,如下所示:
@H_502_0@
$programs = $this->program->orderBy('TrainerId', 'asc')->take(1)->with('weeks.days', 'weeks.days.sessions')->get();
@H_502_0@要么
@H_502_0@
$programs = $this->program->orderBy('TrainerId', 'asc')->take(1)->with('weeks.days.sessions')->get();
@H_502_0@但都返回FatalErrorException
@H_502_0@解决方法:
@H_502_0@从您的问题中,我可以看到您具有如下的嵌套关系.@H_502_0@
programs -> hasmany -> weeks
-----------------------------weeks -> hasmany -> days
----------------------------------------------------days -> hasmany -> sessions
@H_502_0@如果我们不知道几周,那么很难知道几天应该加载什么数据.对于会话也是如此.因此,我们必须先加载星期数据,然后再加载几天,然后再加载会话.@H_502_0@从Laravel文档中,我们可以看到,使用以下方法渴望加载:
@H_502_0@
SELEct * from books
select * from authors where id in (1, 2, 3, 4, 5, ...)
@H_502_0@Laravel根据书籍数据加载作者数据.
@H_502_0@http://laravel.com/docs/eloquent#eager-loading@H_502_0@尝试先加载几周
@H_502_0@
$programs = $this->program->orderBy('TrainerId', 'asc')
->take(1)
->with('weeks', 'weeks.days', 'weeks.days.sessions')
->get();
@H_502_0@要么:
@H_502_0@懒惰渴望加载:@H_502_0@
$programs = $this->program->orderBy('TrainerId', 'asc')->take(1)->get();
$programs->load('weeks', 'weeks.days', 'weeks.days.sessions');
以上是大佬教程为你收集整理的渴望加载深层嵌套的关系?全部内容,希望文章能够帮你解决渴望加载深层嵌套的关系?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。