嗨,我想针对每个品牌设置3个模型,并在控制器中使用此代码
$brand = Brand::with (['models' => function ($q){
$q->take(3);
}])->get()->toArray();
但第一品牌仅需要3个型号,而并非所有Here is the image of my dd command 所以告诉我如何为所有品牌提供3种型号。
答案 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)
应用于您的关系。