gpt4 book ai didi

laravel - 如何预先加载多态关系的不同嵌套关系?

转载 作者:行者123 更新时间:2023-12-04 01:36:15 26 4
gpt4 key购买 nike

我试图通过他们的事件获得用户的所有评论。
我在 Review 中有一个多态关系:它可以链接到 Estimate 或 EventDate。
EventDate 直接链接到 Event,但 Estimate 通过 AskEstimate 链接到它。
我想这样做:

User::with([
'reviews.reviewable.event',
'reviews.reviewable.ask_estimate.event'
])->get();
但是当然它会抛出一个异常:当reviewable 是EventDate 时,它​​没有任何AskEstimate 关系,而当它是Estimate 时,它​​没有任何Event 关系。
那么,根据可审查的值(value),我怎样才能得到给我一个或另一个的东西呢?
谢谢!
编辑:
这是一个工作版本。
Review::where('user_id', $user->id)
->with([
'reviewable',
])
->loadMorph('reviewable', [
Estimate::class => ['ask_estimate'],
EventDate::class => ['event'],
]);

最佳答案

Nested Lazy Eager Loading & morphTo 文档中的部分似乎几乎准确地描述了您正在寻找的内容。它执行“惰性”急切加载而不是急切加载,但我想这已经足够接近了。

根据我对文档的理解,您应该可以使用 loadMorph像这样的方法:

User::with('reviews')->get()
->loadMorph('reviews', [
Estimate::class => ['event'],
EventDate::class => ['ask_estimate.event'],
]);

关于laravel - 如何预先加载多态关系的不同嵌套关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59412815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com