Как я могу добавить клонированный объект в репозиторий

Новый объект не клонируется

$clonedObj = clone $repatNewsObj;
$this->extendednewsRepository->add($clonedObj);
$this->persistenceManager->persistAll();

person test test    schedule 05.04.2019    source источник


Ответы (1)


Это не то, как вы копируете объект extbase с помощью TYPO3. К сожалению, простое клонирование с помощью PHP не приведет к сбросу объекта с точки зрения extbase. Метод add репозитория по умолчанию просто проигнорирует «новый» объект, если у него уже есть uid в базе данных. Следовательно, ваш постоянный вызов фактически ничего не делает.

Вы можете создать новый объект самостоятельно, установив каждое свойство вручную на основе исходного объекта, или вы можете использовать обработчик данных для копирования вашего объекта. Существует сообщение в блоге с описанием этого (в немецкий), а также старый вопрос SO, в котором обсуждается одна и та же проблема.

Если вы хотите клонировать объект из одного из ваших собственных расширений, лучше всего перезаписать метод __clone и сбросить такие вещи, как uid и так далее. Если класс модели исходит от стороннего расширения, выберите один из двух методов, указанных выше.

person Michael    schedule 08.04.2019