Pour afficher les produits par catégorie et exclure des produits spécifiques de la collection associée, vous pouvez interroger la catégorie de produit et charger les produits liés en utilisant with mais retirez le produit souhaité de la collection en utilisant une méthode de fermeture
$product = 10;
$category = Category::with(['products'=> function($query) use($product) {
$query->where('id','!=', $prodcut);
}])
->whereHas('products', function (Builder $query) use($product) {
$query->where('id', $product);
})->get();