Laravel 急切加载具有限制和自定义字段的子关系

Posted

技术标签:

【中文标题】Laravel 急切加载具有限制和自定义字段的子关系【英文标题】:Laravel eager loading sub relations with limit and custom fields 【发布时间】:2020-12-26 16:15:54 【问题描述】:

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

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

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

【问题讨论】:

***.com/a/56010673/4575350 这能回答你的问题吗? Limiting the result of nested relationship in Laravel 【参考方案1】:

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

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

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

然后像使用服务一样使用它。

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

【讨论】:

以上是关于Laravel 急切加载具有限制和自定义字段的子关系的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 约束急切加载 - 如果关系列应用限制!= 1

Laravel 5.1通过急切加载返回连接字段

Laravel 自定义数据透视表关系和急切加载?

Laravel 动态关系 - 在急切加载时访问模型属性

Laravel 混合获取 Eloquent 急切加载嵌套多个模型

Laravel 急切加载多个模型,它们都在同一个表中