Die Funktionen take() und limit() funktionieren nicht mit Eager Loading, wenn Sie mit get() mehr als ein übergeordnetes Modell abrufen.
Also müssen Sie es anders machen,
$categories = Category::with('contents')->get();
Nach dem Abrufen von $categories
, können Sie die foreach-Schleife wie unten ausführen,
$contents = [];
foreach($categories as $category){
$category->limitedContents = $category->contents()->with('languages')->limit(4);
}
Und dadurch erhalten Sie 4 Inhalte pro Kategorie in allen Kategorien mit limitedContents
.