33namespace StevenFox \LaravelModelValidation ;
44
55use Illuminate \Database \Eloquent \Model ;
6+ use Illuminate \Support \Arr ;
67use Illuminate \Validation \Rule ;
78use Illuminate \Validation \Rules \Unique ;
89use Illuminate \Validation \ValidationException ;
@@ -204,11 +205,17 @@ protected function afterMakingValidator(Validator $validator): void
204205 //
205206 }
206207
207- public function validationData (): array
208+ public function validationData (array | string | null $ keys = null ): array
208209 {
209- return $ this ->prepareAttributesForValidation (
210+ $ data = $ this ->prepareAttributesForValidation (
210211 $ this ->rawAttributesForValidation ()
211212 );
213+
214+ if (! $ keys ) {
215+ return $ data ;
216+ }
217+
218+ return Arr::only ($ data , $ keys );
212219 }
213220
214221 protected function rawAttributesForValidation (): array
@@ -221,7 +228,18 @@ protected function prepareAttributesForValidation(array $rawAttributes): array
221228 return $ rawAttributes ;
222229 }
223230
224- public function validationRules (): array
231+ public function validationRules (array |string |null $ keys = null ): array
232+ {
233+ $ rules = $ this ->combinedValidationRules ();
234+
235+ if (! $ keys ) {
236+ return $ rules ;
237+ }
238+
239+ return Arr::only ($ rules , $ keys );
240+ }
241+
242+ protected function combinedValidationRules (): array
225243 {
226244 // If the developer has set superseding validation rules for the model,
227245 // we will use those exclusively.
0 commit comments