首页 > 解决方案 > 如何从类别表中获取 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 是否有它的解决方案。我将不胜感激您的回答。:)

标签: laraveleloquentlaravel-8

解决方案


有一个专门用于此的 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();

推荐阅读