/** * Устанавливает в провайдер данных данные в поле типа ManyToManyRelationField. * @param string $dataSource идентификатор источника данных для элемента * @param array $data * @throws UnexpectedValueException если данные в неверном формате */ private function setManyToManyObjectSetData($dataSource, $data) { if (!is_array($data)) { throw new UnexpectedValueException('Cannot set data for ManyToManyRelationField. Data should be an array.'); } $property = $this->data->getPropertyByPath($dataSource); /** * @var ManyToManyRelationField $field */ $field = $property->getField(); $targetCollection = $field->getTargetCollection(); /** * @var IManyToManyObjectSet $objectSet */ $objectSet = $this->data->getValueByPath($dataSource); $objectSet->detachAll(); foreach ($data as $id) { $objectSet->link($targetCollection->getById($id)); } }