Ett av sätten du kan uppnå det du försöker göra är:
Deal:where('status', 'active')
->get()
->groupBy('type')
->map(function($deal) {
return $deal->take(3);
});
Naturligtvis måste du kontrollera om frågan returnerar null eller empty objekt och observera att frågan returnerar alla aktiva Deal (s) (filtreringen sker på Collection ) vilket kan vara ineffektivt om det finns många Deal (s)