The Available Validation Rules

Laravel 2,157 ships more than a hundred rules for presence (required, nullable), type (string, array), format (email, regex), comparison (confirmed, in), databases and files. An Artisan closure command in routes/console.php passed the product rules and bad input ('name' => '', 'sku' => 'BK-1001', 'category_id' => 9, 'format' => 'audiobook', 'price' => '12.999', 'stock' => '-1', 'sale_ends' => '2026-01-31') to Validator::make() and printed errors()->all():

The product rulesPHP
'name' => ['required', 'string', 'max:120'],
'sku' => ['required', 'string', 'max:20', 'unique:products,sku'],
'category_id' => ['required', 'integer', 'exists:categories,id'],
'format' => ['required', Rule::enum(Format::class)],
'price' => ['required', 'numeric', 'decimal:0,2', 'min:0.01'],
'stock' => ['nullable', 'integer', 'min:0'],
'sale_ends' => ['nullable', 'date', 'after:today'],
Output
$ php artisan shop:check-product
The name field is required.
The sku has already been taken.
The selected category id is invalid.
The selected format is invalid.
The price field must have 0-2 decimal places.
The stock field must be at least 0.
The sale ends field must be a date after today.

unique and exists each ran a select count(*) on the column, so index it (Indexes). after: takes anything strtotime() reads, or another field's name. Size rules count characters, value, items or kilobytes by type, but a field is a number only with numeric or integer: max:5 alone passed '10', integer|max:5 failed it.