首页 > 解决方案 > Laravel 急切加载具有限制和自定义字段的子关系

问题描述

我有自定义查询,通过对城市进行分组来获取服务,并通过加载评论从服务表中仅选择自定义字段:

$services = City::select('id')
                ->has('services')
                ->with([
                    'services:id,title',
                    'services.reviews'
                ])->get();

在这种情况下,我只需要对每个带有评论自定义字段的服务进行3 条评论。例如,我只需要评论表中的描述和率。在我的情况下我该怎么做?

标签: phplaraveleloquentrelationshipeager-loading

解决方案


您可以创建一个将子级限制为三行的关系。然后,您将能够以与服务相同的方式指定要显示的列。

例如,在 Service 模型中,添加如下内容:

public function threeReviews() {
    return $this->reviews()->take(3);
}

然后以与使用服务相同的方式使用它。

->with(['services:id,title','services.reviews:description,rate'])

推荐阅读