Из документов Laravel на Ограничение активных нагрузок
[!] Методы построения запросов limit
и take
могут не использоваться при ограничении активных нагрузок.
Таким образом, вам нужно создать еще один метод отношений в вашем классе Category
, например,
public function lastPosts()
{
return $this->hasMany('App\Post')->take(4);
}
, а затем использовать его
$allcats = Category::whereHas('posts')->with('lastPosts')->get();
Или использоватьнеобработанный запрос
$allcats = Category::whereHas('posts')->with(['posts' => function($q){
$q->orderBy('created_at')->selectRaw('max(4)');
}])->get();
Надеюсь, это поможет