'required|valid_email', 'user_id' => 'required|integer', 'firstname' => 'required|string|max_length[255]', 'lastname' => 'required|string|max_length[255]', 'phone_number' => 'required|string|max_length[25]', 'relation_to_user' => 'string|max_length[64]', 'status' => 'required|in_list[Pending,Active]', ]; // Custom validation messages protected $validationMessages = [ 'email' => [ 'required' => 'Email is required', 'valid_email' => 'Email must be valid', ], 'user_id' => [ 'required' => 'User ID is required', 'integer' => 'User ID must be an integer', ], 'firstname' => [ 'required' => 'First name is required', 'string' => 'First name must be a string', 'max_length' => 'First name cannot exceed 255 characters', ], 'lastname' => [ 'required' => 'Last name is required', 'string' => 'Last name must be a string', 'max_length' => 'Last name cannot exceed 255 characters', ], 'phone_number' => [ 'required' => 'Phone number is required', 'string' => 'Phone number must be a string', 'max_length' => 'Phone number cannot exceed 25 characters', ], 'relation_to_user' => [ 'string' => 'Relation to user must be a string', 'max_length' => 'Relation to user cannot exceed 64 characters', ], 'status' => [ 'required' => 'Status is required', 'in_list' => 'Status must be either Pending or Active', ], ]; // Optional: Skip validation for bulk inserts protected $skipValidation = false; }