profiles. This will allow you to define all your constraints but also define field profiles where you can define only certain fields to be validated if the profile name is used.
validate(), validateOrFail()has a
profilesargument. You can then pass one or more to the argument so you can validate 1 or more profiles: