Laravel 8 多态关联计数
如果您想加载一个 morphTo
关系,以及该关系可能返回的各种实体上的嵌套关系计数,可以将 with
方法与 morphTo
关系的 morphWithCount
方法结合使用。
在此示例中,假设 Photo
和 Post
模型可以创建 ActivityFeed
模型。 另外,我们假设 Photo
模型与 Tag
模型相关联,而 Post
模型与 Comment
模型相关联。
使用这些模型定义和关系,我们可以检索 ActivityFeed
模型实例,并急于加载所有 parentable
模型及其各自的嵌套关系计数:
use Illuminate\Database\Eloquent\Relations\MorphTo;
$activities = ActivityFeed::query()
->with(['parentable' => function (MorphTo $morphTo) {
$morphTo->morphWithCount([
Photo::class => ['tags'],
Post::class => ['comments'],
]);
}])->get();
另外,如果已经检索了 ActivityFeed
模型,则可以使用 loadMorphCount
方法将所有嵌套的关系计数加载到多态关系的各个实体上:
$activities = ActivityFeed::with('parentable')
->get()
->loadMorphCount('parentable', [
Photo::class => ['tags'],
Post::class => ['comments'],
]);