Ситуация, которую вы описываете, может быть связана с тем, как работает система валидации в Laravel и как обрабатываются данные перед их валидацией.
Когда вы используете метод `$this->request->set()`, вы добавляете параметр в объект запроса, однако это не означает, что этот параметр будет автоматически включён в результаты валидации. Вот некоторые моменты, которые стоит учесть:
1. **Порядок операций**: Возможно, вы вызываете `$request->validated()` до того, как добавили параметр с помощью `$this->request->set()`. Если это так, то валидация не будет учитывать этот параметр.
2. **Правила валидации**: Убедитесь, что у вас установлены правильные правила валидации для `factory_id`. Если его не видно в результаты валидации, возможно, валидация игнорирует данный параметр.
3. **Запросы и фильтры**: Валидация происходит на основе данных, пришедших в запросе. Если параметр `factory_id` по какой-то причине не попадает в массив входящих данных (например, вы не передаёте его в запросе из формы), он не будет отражён в результате валидации.
4. **Проверьте логику контроллера**: Убедитесь, что ваш контроллер правильно передаёт данные в валидацию. Если вы перенаправляете данные или используете какие-то дополнительные промежуточные слои, проверьте, на каком этапе теряется параметр.
5. **Альтернативные методы**: Если вы хотите добавить параметр валидации, вы также можете использовать метод `merge` или `withInput` для передачи данных в запрос перед валидацией.
Пример с использованием `merge`:
```php
$request->merge(['factory_id' => 1]); // Или нужное значение
$validatedData = $request->validated();
```
В общем, чтобы диагностировать проблему, стоит внимательно просмотреть порядок выполнения кода и убедиться, что ваши правила валидации учитывают все передаваемые параметры.