Поэтому я пытаюсь перенести живую установку на мой локальный хост. У меня есть много изображений в моих пользовательских данных, изображения, которые были загружены и вставлены в сообщения.
Проблема в том, что на живом сервере образы маршрутов
/uploads/images/...
в то время как в локальной среде это будет
/mysite/web/uploads/images/...
Поэтому я попробовал использовать скрипт searchreplacedb2.php, найденный здесь (https://interconnectit.com/products/search-and-replace-for-wordpress-databases/ Я использовал v2.1.0 stable), это рекомендуется для переноса установки WordPress, и я подумал, что сериализация данных в mySql должна работать так же, как в WP, так и в приложении Sym2.
Но, возможно, нет, так как я получаю следующую ошибку от Sym2, когда он пытается прочитать из этой таблицы, я выполнил поиск / замену:
ContextErrorException: Notice: unserialize(): Error at offset 1672 of 1953 bytes in /Users/acr/Documents/www/cloudsign/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/ArrayType.php line 48
Вот пример сериализованных данных, на которых я произвел замену:
a:6:{i:0;s:11:"transparent";i:3;s:6:"repeat";i:4;s:4:"left";i:5;s:3:"top";i:6;s:1707:"<div id="object_01" class="object_image lockedAspectRatio ui-draggable ui-resizable" namn="object_01" style="height:1036.5599999427795px;width:1635.5599999427795px;left:-1.994384765625px;top:-15px;position:absolute;"><img class="object_inner" src="/cloudsign/web/uploads/images/20/c274edd7f10f5d34157108658d9e7e6eebf16bb4.jpeg" alt="c274edd7f10f5d34157108658d9e7e6eebf16bb4" /><div class="ui-resizable-handle ui-resizable-e" style="z-index:1000;"></div><div class="ui-resizable-handle ui-resizable-s" style="z-index:1000;"></div><div class="ui-resizable-handle ui-resizable-se ui-icon ui-icon-gripsmall-diagonal-se" style="z-index:1000;"></div></div><div id="object_02" class="object_textbox" namn="object_02" style="z-index:2;font-family:Arial;left:940.9950561523438px;top:84.98873901367188px;position:absolute;width:493.55999994277954px;height:77.55999994277954px;"><div class="object_inner" style="border:0px solid rgb(0,0,0);background-color:rgb(163,178,240);color:rgb(255,255,255);font-weight:bold;font-family:Arial;font-size:44px;line-height:66px;text-align:center;">Vinter Kampanj!</div></div><div id="object_03" class="object_textbox" namn="object_03" style="z-index:3;font-family:Arial;left:917px;top:215px;position:absolute;width:549.5599999427795px;height:625.5599999427795px;"><div class="object_inner" style="border:0px solid rgb(0,0,0);color:rgb(0,0,0);text-align:center;font-weight:bold;font-size:44px;line-height:66px;border-top-left-radius:15px;border-top-right-radius:15px;border-bottom-right-radius:15px;border-bottom-left-radius:15px;">Missa inte vår stora vinter rea med upp till 70% rabatt! <br /><br /><br />Många stora märken som North Face, Peak<br />Adidas, Columbia, Burton m.m.</div></div>";i:7;s:8:"original";}
Вы можете использовать обратные вызовы Doctrine Lifecycle для изменения этого пути в процессе разработки вместо изменения содержимого базы данных. Мое мнение, что вы могли бы использовать @PostLoad
добиться того, что вы хотите, более элегантным способом.
Ссылка: Doctrine Lifecycle Callbacks
Других решений пока нет …