每个模型的Laravel极限载荷

每个模型的Laravel极限载荷,laravel,eloquent,Laravel,Eloquent,使用我们的用户模型,我们渴望加载对话和这些对话的消息。在每次对话中,我们将引导最后25条信息。因此,我们编写了以下查询 User::where('status', 3)->with(['conversations.messages' => function ($q) { $q->take(25)->orderBy('created_at', 'DESC'); }])->get(); 但是,此函数总共只返回25条消息(因此不是每个会话)。即使您有1000个用

使用我们的用户模型,我们渴望加载对话和这些对话的消息。在每次对话中,我们将引导最后25条信息。因此,我们编写了以下查询

User::where('status', 3)->with(['conversations.messages' => function ($q) {
    $q->take(25)->orderBy('created_at', 'DESC');
}])->get();
但是,此函数总共只返回25条消息(因此不是每个会话)。即使您有1000个用户,它也会加载messages表中的最后25条消息,但不会加载用户每次对话的最后25条消息


在Laravel雄辩的方法论中有没有解决这个问题的方法?

Laravel中没有对此的原生支持

我为它创建了一个包:

在父模型和相关模型中都使用
haskeetLimit
特征

类会话扩展模型{
使用\staudenMir\elounceTeagerLimit\hasWangerLimit;
}
类消息扩展模型{
使用\staudenMir\elounceTeagerLimit\hasWangerLimit;
}

然后,您可以将
->take(25)
应用到您的关系中。

在Laravel中没有对这一点的本地支持

我为它创建了一个包:

在父模型和相关模型中都使用
haskeetLimit
特征

类会话扩展模型{
使用\staudenMir\elounceTeagerLimit\hasWangerLimit;
}
类消息扩展模型{
使用\staudenMir\elounceTeagerLimit\hasWangerLimit;
}

然后你就可以在你们的关系中使用[code>->take(25)。

这可能重复回答了你的问题吗?这个答案是否回答了你的问题?