我正在尝试获取用户及其事件的所有评论。 我在Review中有一个多态关系:它可以链接到Estimate或EventDate。 EventDate直接与Event关联,但Estimate通过AskEstimate与其关联。
我想这样做:
User::with([
'reviews.reviewable.event',
'reviews.reviewable.ask_estimate.event'
])->get();
但是,它当然会抛出一个例外:当EventDate可审阅时,它没有任何AskEstimate关系;当它是Estimated时,它没有任何事件关系。
那么,根据可审查的价值,我怎样才能得到给我一个或另一个的东西?
谢谢!
答案 0 :(得分:0)
文档中的Nested Lazy Eager Loading & morphTo
部分似乎几乎完全描述了您要查找的内容。它确实做到了“懒惰”的渴望加载而不是渴望的加载,但是我想这已经足够了。
根据我对文档的了解,您应该可以使用loadMorph
这样的方法:
User::with('reviews')->get()
->loadMorph('reviews', [
Estimate::class => ['event'],
EventDate::class => ['ask_estimate.event'],
]);
答案 1 :(得分:0)
感谢Delena的回答。
根据文档,我认为必须那样使用loadMorph:
User::with('reviews.reviewable')
->limit(1)
->get()
->loadMorph('reviews.reviewable', [
Estimate::class => ['ask_estimate.event'],
EventDate::class => ['event'],
]);
但是通过这个,我只得到reviews.reviewable
的结果,我没有得到任何事件或ask_estimate,例如loadMorph是否没用。