Я хочу записать изменения в БД, но всегда получаю сообщение об ошибке:
Catchable Fatal Error: Объект класса DateTime не может быть преобразован
нанизывать
Я получаю изменения в сущности, используя getEntityChangeSet()
а затем я хочу проанализировать данные в читаемый формат и затем записать их в БД:
$changes = $uow->getEntityChangeSet($entity);
$log='';
foreach ($changes as $key=>$change)
{
$log.= "{$key} => Old Value:{$change[0]} => New Value:{$change[1]}";
}
Если я не попытаюсь записать читаемую белую доктрину чего-то подобного change_set
поле:
а: 3: {s: 5: «значение»; а: 2: {я: 0, N, я: 1; s: 3: «120»;} s: 4: «Пункт»; а: 2: { я: 0, N, я: 1; O: 21: «AppBundle \ Entity \ Пункт»: 6: {s: 25: «AppBundle \ Entity \ Itemid»; I: 127; s: 27: «AppBundle \ Entity \ ITEMNAME «; s: 7:» newitem «; s: 13:» * категории «; O: 33:» Учение \ ОРМ \ PersistentCollection «: 2: {s: 13:» * коллекция «; O: 43:» Учение \ Общие \ Коллекции \ ArrayCollection «: 1: {s: 53:» Учение \ Common \ Коллекции \ ArrayCollectionelements «; а: 2: {I: 0; O: 25:» AppBundle \ Entity \ Категория «: 7: {s : 29: «AppBundle \ Entity \ CategoryId», я: 2; s: 31: «AppBundle \ Entity \ CategoryName»; s: 10: «ребенок
в
1 «; s: 33:» AppBundle \ Entity \ Categoryparent «; O: 40:» Proxies__CG __ \ AppBundle \ Entity \ Категория «: 8: {s: 17:»IsInitialized«; Б: 0; s: 29:» AppBundle \ Entity \ CategoryId «; я: 1; s: 31:» AppBundle \ Entity \ CategoryName «N; s: 33:» AppBundle \ Entity \ Categoryparent «, N; с: 35: «AppBundle \ Entity \ Categorychildren», N; s: 8: «* Элементы», N; s: 36: «AppBundle \ Entity \ CategorycreatedAt», N; s: 36: «AppBundle \ Entity \ CategoryupdatedAt» , N;} s: 35: «AppBundle \ Entity \ Categorychildren»; O: 33: «Учение \ ОРМ \ PersistentCollection»: 2: {ы: 13: «* сбор»; O: 43: «Учение \ Common \ Коллекции \ ArrayCollection «: 1: {s: 53:» Учение \ Common \ Коллекции \ ArrayCollectionelements «; а: 0: {}} s: 14:» * инициализирован «; б: 0;} s: 8:» * Элементы» ; O: 33: «Учение \ ОРМ \ PersistentCollection»: 2: {s: 13: «* коллекция»; O: 43: «Учение \ Общие \ коллекции \ ArrayCollection»: 1: {s: 53: «Учение \ Общие \ Коллекции \ ArrayCollectionelements «; а: 0: {}} s: 14:» * инициализирован «; б: 0;} s: 36:» AppBundle \ Entity \ CategorycreatedAt «N; s: 36:» AppBundle \ Entity \ CategoryupdatedAt «N;} я: 1; O: 25:» AppBundle \ Entity \ Категория «: 7: {s: 29:» AppBundle \ Entity \ CategoryId «; я: 4; s: 31:» AppBundle \ Entity \ CategoryName «; s: 8:» child1.1 «; s: 33:» AppBundle \ Entity \ Categoryparent» ; Г: 13; s: 35: «AppBundle \ Entity \ Categorychildren»; O: 33: «Учение \ ОРМ \ PersistentCollection»: 2: {s: 13: «* коллекция»; O: 43: «Учение \ Общие \ Коллекции \ ArrayCollection «: 1: {s: 53:» Учение \ Common \ Коллекции \ ArrayCollectionelements «; а: 0: {}} s: 14:» * инициализирован «; б: 0;} s: 8:» * предметы «; O: 33:» Учение \ ОРМ \ PersistentCollection «: 2: {s: 13:» * коллекция «; O: 43:» Учение \ Общие \ коллекции \ ArrayCollection «: 1: {s: 53:» Учение \ Общие \ Коллекции \ ArrayCollectionelements «; а: 0: {}} s: 14:» * инициализированы «; б: 0;} s: 36:» AppBundle \ Entity \ CategorycreatedAt «; N; s: 36:» AppBundle \ Entity \ CategoryupdatedAt «N;}}} s: 14:» * инициализирован «; б: 1;} s: 13:» * атрибуты «N; s: 32:» AppBundle \ Entity \ ItemcreatedAt «; O: 8: «DateTime»: 3: {s: 4: «дата»; s: 26: «2018-03-19
10: 22: 47,000000 «; s: 13:» timezone_type «; я: 3; s: 8:» часовой пояс «; s: 3:» UTC «;} s: 32:» AppBundle \ Entity \ ItemupdatedAt «, N; }} s: 9: «атрибут»; а: 2: {я: 0, N, я: 1; O: 26: «AppBundle \ Entity \ Атрибут»: 3: {s: 30: «AppBundle \ Entity \ Attributeid «; я: 96; s: 33:» AppBundle \ Entity \ Attributealias «; s: 5:» цена «; s: 32:» AppBundle \ Entity \ имя_атрибута «; s: 5:» цена «;}}}
Любая идея, как преобразовать дату и другие объекты в строку? Или мне нужно использовать другой метод для решения этой задачи?
Сначала проверьте, является ли значение объектом \ DateTime, а затем преобразуйте его.
...
if ($change[0] instanceof \DateTime) {
$stringValue = $value->format('Y-m-d H:i:s');
}
// Do the same for $change[1]
...
Других решений пока нет …