laravel - 如何从类别表中获取 5 个类别并在 laravel 中获取每个类别的 4 个帖子
问题描述
我有一个名为的表categories
和一个名为courses
. 这些表是一对多的关系,这意味着每个课程属于一个类别,每个类别都有很多课程。现在,我想为这些类别中的每一个获得 5 个categories
(顺序还不重要)和 4个。courses
我在 stackoverflow 和网络上尝试了一些解决方案,但都没有奏效!其中一个(以下代码)仅获得第一项的 4 门课程!
$result = Category::with(['courses' => function ($query) {
$query->take(4);
})->take(5)->get();
我用 for 循环解决了这个问题,但我想知道 laravel 是否有它的解决方案。我将不胜感激您的回答。:)
解决方案
有一个专门用于此的 laravel 包,称为 Eloquent Eager Limit:
安装后:
composer require staudenmeir/eloquent-eager-limit:"^1.0"
您应该在应用有限预加载的模型中使用它:
class Category extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
// ........
}
class Course
extends Model
{
use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
// ........
}
现在这个查询将得到你想要的结果:
$result = Category::with(['courses' => function ($query) {
$query->take(4);
})->take(5)->get();
推荐阅读
- javascript - Cookie expiration date equals -1
- php - 条带将元数据传递给客户条带时出现无效哈希错误
- linux - 无法在 Shell 脚本中保存进程的进程 ID
- angular - Angular 6 库
- ios - iOS: Error Domain=NSCocoaErrorDomain Code=132001 '-save: on the context aborted' 在后台使用更新数据库核心数据/推送通知
- kendo-ui - 验证不适用于 Jquery 中 Kendo Grid UI 的 KeyDown 事件
- html - CSS counter-increment page on print view issue
- python - 如何让 Django Admin 缓存内联的选择选项?
- c# - Task.WaitAll,获取所有异常和单个任务持续时间
- php - 使用 php 在选择选项上未显示图像