Le funzioni take() e limit() non funzioneranno con il caricamento ansioso se si recupera più di uno modello genitore utilizzando get().
Quindi devi fare un altro modo,
$categories = Category::with('contents')->get();
Dopo aver recuperato $categories
, puoi eseguire il ciclo foreach come di seguito,
$contents = [];
foreach($categories as $category){
$category->limitedContents = $category->contents()->with('languages')->limit(4);
}
E così facendo otterrai 4 contenuti per categoria in tutte le categorie con limitedContents
.