# ivyforms/0.4/backend/src/Services/FieldOptions/FieldOptionsService.php

The Innovative Form Builder – IvyForms, version 0.4. 100 lines.

- Page: https://pluginprobe.com/plugins/ivyforms/0.4/code/backend/src/Services/FieldOptions/FieldOptionsService.php
- Raw: https://pluginprobe.com/plugins/ivyforms/0.4/raw/backend/src/Services/FieldOptions/FieldOptionsService.php
- Modified: 2025-09-25T14:53:02+00:00

Line numbers below start at 1. Link to a line or a range by appending a fragment to the
page URL, for example `https://pluginprobe.com/plugins/ivyforms/0.4/code/backend/src/Services/FieldOptions/FieldOptionsService.php#L10-L20`.

```php
<?php

namespace IvyForms\Services\FieldOptions;

// phpcs:disable PSR1.Files.SideEffects
if (!defined('ABSPATH')) {
    exit; // Exit if accessed directly
}


use IvyForms\Common\Exceptions\InvalidArgumentException;
use IvyForms\Repository\FieldOptions\FieldOptionsRepositoryInterface;
use IvyForms\Entity\FieldOptions\FieldOptions;

class FieldOptionsService
{
    /**
     * @var FieldOptionsRepositoryInterface
     */
    private FieldOptionsRepositoryInterface $repository;

    /**
     * @param FieldOptionsRepositoryInterface $repository
     */
    public function __construct(FieldOptionsRepositoryInterface $repository)
    {
        $this->repository = $repository;
    }

    /**
     * @param FieldOptions $option
     * @return int
     */
    public function addOption(FieldOptions $option): int
    {
        return $this->repository->add($option);
    }

    /**
     * Batch add FieldOptions entities.
     * @param FieldOptions[] $options
     * @return array<int> Inserted IDs
     */
    public function addOptions(array $options): array
    {
        return $this->repository->addMany($options);
    }

    /**
     * @param FieldOptions $option
     * @return bool
     */
    public function updateOption(FieldOptions $option): bool
    {
        return $this->repository->update($option->getId(), $option);
    }

    /**
     * Batch update FieldOptions entities.
     * @param FieldOptions[] $options
     * @return int Number of updated rows
     */
    public function updateOptions(array $options): int
    {
        return $this->repository->updateMany($options);
    }

    /**
     * @param int $fieldId
     * @return bool
     */
    public function deleteOptionsByFieldId(int $fieldId): bool
    {
        return $this->repository->deleteByFieldId($fieldId);
    }

    /**
     * Delete all options for multiple field IDs in one query.
     * @param int[] $fieldIds
     * @return int Number of deleted options
     * @throws InvalidArgumentException
     */
    public function deleteOptionsByFieldIds(array $fieldIds): int
    {
        if (empty($fieldIds)) {
            return 0;
        }
        return $this->repository->deleteManyByForeignKeyValues($fieldIds, 'fieldId');
    }

    /**
     * @param int $fieldId
     * @return array<FieldOptions>
     */
    public function getByFieldId(int $fieldId): array
    {
        return $this->repository->getByFieldId($fieldId);
    }
}

```
