Laravel渴望加载带有限制和自定义字段的子关系

问题描述

我有一个自定义查询,可以在其中按城市分组来获得服务,并通过加载那里的评论从服务表中仅选择自定义字段

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

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

解决方法

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

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

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

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

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