如何在laravel中对数组的每个索引使用take()

时间:2019-01-18 12:21:54

标签: sql database laravel eloquent

嗨,我想针对每个品牌设置3个模型,并在控制器中使用此代码

 $brand = Brand::with (['models' => function ($q){
            $q->take(3);
    }])->get()->toArray();

但第一品牌仅需要3个型号,而并非所有Here is the image of my dd command 所以告诉我如何为所有品牌提供3种型号。

2 个答案:

答案 0 :(得分:0)

使用收集方法图后,我找到了一种解决方案,可以为所有品牌获得3种模型

  $feed= Brand::with(['models'])->get()->map(function ($query) {
        $query->setRelation('models', $query->models->take(3));
        return $query;
    });

答案 1 :(得分:0)

Laravel中没有对此的本地支持。

我为此创建了一个包:https://github.com/staudenmeir/eloquent-eager-limit

在父模型和相关模型中都使用HasEagerLimit特性。

class Brand extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

class RelatedModel extends Model {
    use \Staudenmeir\EloquentEagerLimit\HasEagerLimit;
}

然后,您可以将->take(3)应用于您的关系。