每个模型的Laravel极限载荷
使用我们的用户模型,我们渴望加载对话和这些对话的消息。在每次对话中,我们将引导最后25条信息。因此,我们编写了以下查询每个模型的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个用
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)。这可能重复回答了你的问题吗?这个答案是否回答了你的问题?