Andrew
Andrew
Место ошибки
Andrew
Andrew
Определения бандла
Andrew
По хоткеем шторма всё ок переходит туда-сюда
Artur
new \TeamSoft\...и т.д. Слеш добавить может?
Andrew
new \TeamSoft\...и т.д. Слеш добавить может?
это AppKernel.php Там рутовый неймспейс
Andrew
Ну и со слешем та же ошибка
Andrew
Короче проблема была в не правильном имени файла для автолоада
Andrew
кек(((
Dmitriy
Подскажите пожалуйста. Есть таблица в ней записи. Есть репозиторий и сущность этой таблицы. Вопрос, я получаю новые записи не с таблицы а с внешнего апи и нужно сравнить то что есть в таблице с тем что получено с апи. и удалить\обновить\создать сущности
Dmitriy
есть где какой пример ? или в двух словах как такое мутить?
Сергей
то есть у тебя в итоге есть два объекта одного класса - полученный из бд и полученный из внешнего апи?
Dmitriy
с бд ентити, с апи приходит массив
Dmitriy
и вот надо сравнить то что есть в бд, с тем что пришло ну и по ситуации удалить\обновить\добавить
Кирилл
ну и проблема то в чем?
Dmitriy
я не понимаю как сопоставить ентити с бд , с массивом данных полученых с апи
Dmitriy
ну тоесть получается мне как то надо массив перегнать в ентити? и потом ентити сравнивать между собой?
Кирилл
получается так
Serezha
новые сущности вычислять по каким то айдишникам. измененные можно сравнивать хешируя важные поля/ если хеш изменился обновлять сущность целиком
Serezha
фцию хеширования ентити и массива из апи напискть самому
Dmitriy
дда
Dmitriy
сравнить по id я могу
Dmitriy
найти там расхождение схождение
Alexander
lf
Ну тогда ищешь по этой айдишки запись, сверяешь нужно ли обновить поля и обновляешб
Dmitriy
вопрос в другом. как массив с апи rконвертнуть в ентити
Alexander
Или создаёшь
Dmitriy
чтобы потом сделать persist и flush
Alexander
Тебе не нужно конвертить
Alexander
Тебе нужно по тому что пришло найти запись и обновить существующую или прям здесь же создать новую ентити и заполнить из массива
Dmitriy
оо, а как ?
Dmitriy
вот
Dmitriy
как найти я разобрался
Dmitriy
как обновить
Alexander
Ну всмысле)
Dmitriy
с массива в -> ентити
Dmitriy
ну там 10 полей
Dmitriy
не вручную ж сетить
Dmitriy
каждое новое поле
Alexander
А чего нет то
Dmitriy
да чет как то костылем пахнет)
Alexander
Ну думай тогда, я не вижу смысла какие то абстракции городить, если нужно 10 полей обновить. Я бы это сделал явно
Alexander
Как вариант можно создать dto того что приходит, через сериалайзер его заполнить, а потом уже сделать общий метод где нибудь, который умеет сохранять из этого дто. Причем через это же самое дто ты можешь всегда сохранять и откуда угодно, нужно будет лишь заполнить дто(сериалайзер в помощь)
Alexander
Поля заполнить пахнет костылем, ну отлично, блин)
Dmitriy
не не подумай я не хотел обидеть тебя)
Alexander
еще один костыль тогда в помощь, в ентети сделай такой же массив который приходит с апи и функцией стандартной для массивов вычесли расхождения, но потом все равно все сеттить если нужно добавить или обновить
Dmitriy
просто мне такая идея пришла в голову, но я чет подумал что мб есть другой способ)
Dmitriy
окей всем спасибо)
Alexander
Да причем тут обида вообще) просто странно почему это костыль
Alexander
Так или иначе данные в сущность должны как-то попасть. И так уж повелось, что с доктриной это делают через сеттеры
Alexander
И где то это все равно нужно будет сделать, как ты ни крути
Dmitriy
а еще вопрос
Dmitriy
вот допустим я получил ентити с ид 5 сеттерами засеттил и есть такая же в бд с ид 5. Как доктрине указать чтобы она обновила. А то я щас делаю персист и флаш и ловлю мол дубликат по примари кей
Dmitriy
что логично доктрина пытается создать
Alexander
не проще проверить по id есть ли сущность, если нет - свободно заполнять (хотя и странно что id заполняем), а если есть то берем эту сущность и без id обновляем
Alexander
entity = repository->find(api[id]) if (null === entity) { entity = new Entity(); }
Alexander
И если запись ты уже нашел из репозитория, то ее не нужно повторно персиститт
Alexander
И лучше все таки айди иметь внутренний, + хранить внешний айди где нибудь
Dmitriy
ага
Dmitriy
понял
Dmitriy
добро
Dmitriy
ща буду пробывать)
Dmitriy
спасибо за советы
Alexander
Я для таких вещей писал матчер, можешь глянуть, но там документации нету)) но может идеи какие возьмёшь https://github.com/drumser/matcher/tree/master/matcher
Dmitriy
потыкаю
Dmitriy
пасиб
Dmitriy
а как?)
Вадим
а как?)
через nativeQuery
Вадим
Тоесть обычный SQL
Dmitriy
а если там с апи невалидное что то прийдет
Вадим
Получить массив записи и сравнить
Вадим
а если там с апи невалидное что то прийдет
А валидация на сущность навешана?
Вадим
Мапинг массива на обьект, можно сделать через Serializer .. но все зависит о того, как там все сделано )
Вадим
Самый правильный вариант, это с DTO если нужно себя обезопасить ... и навешать валидацию на DTO
Dmitriy
про DTO подумаю
Dmitriy
спасиб
Вадим
про DTO подумаю
А какие проверки есть у сущности?