Melt the butter in a large saucepan or Dutch oven over medium heat.
Add the onion, carrots, and garlic.
Cook until they are tender, which takes about 5 minutes.
Sprinkle in the flour and stir constantly.
Cook until it's golden, around 3 to 4 minutes.
Gradually add in the chicken broth, whisking as you pour.
Add the bay leaves.
Stir in the broccoli florets and let them simmer.
Cover the pot and cook until the broccoli is tender, about 15 minutes.
Remove the bay leaves.
Then, add the milk and half-and-half into the mixture.
Stir continuously until the mixture is well combined and heated through.
Reduce the heat to low and slowly add the cheddar cheese.
Stir until the cheese is fully melted and the soup is creamy.