Привет, я хочу использовать 3 модели для каждой марки и использую этот код в своем контроллере.
$brand = Brand::with (['models' => function ($q){ $q->take(3); }])->get()->toArray();
Но для первой марки нужно не только 3 модели, а не для всех Вот изображение моей команды dd Так скажите мне, как собрать 3 модели для всех брендов.
В Laravel нет родной поддержки для этого.
Я создал для него пакет: https://github.com/staudenmeir/eloquent-eager-limit
Используйте черту HasEagerLimit как в родительской, так и в связанной модели.
HasEagerLimit
class Brand extends Model { use \Staudenmeir\EloquentEagerLimit\HasEagerLimit; } class RelatedModel extends Model { use \Staudenmeir\EloquentEagerLimit\HasEagerLimit; }
Тогда вы можете применить ->take(3) к вашим отношениям.
->take(3)
Я нашел одно решение после использования карты метода сбора, вы можете получить 3 модели для всех марок
$feed= Brand::with(['models'])->get()->map(function ($query) { $query->setRelation('models', $query->models->take(3)); return $query; });