Есть разница между with с кложуром и whereHas, первый будет возвращать всех родителей а отношение только у тех что отрабатывают условие в кложуре, второй же вернёт только тех родителей у которых в отношении выполняется условие вместе с отношением естественно