Павел
Приветствую :) Что-то словил неожиданное но в тоже время логичное поведение с one-to-one. Имеются сущность one to one, nullable. Bidirectional. Кейс: загрузка и подставление изображения (отдельная сущность) к сущности. При смене изображения, необхоимо чтобы прошлое стало с null связью а во второй подставился id. На проблема в том, что доктрина генерит uniq индекс. И когда все это в одной транзакции под flush (где нет возможности управления какая сущность первая зайдет в транзакцию) - падает по констрейнту. Решение пока нашли - это делать в двух транзакциях (сначала null в старом изображении, потом установка id в новом), но какая то херня) Может что делаем неверно, с точки зреня вообще использования one to one.
Konstantin
безотносиительно вопроса: я предпочитаю 1-1 избегать, от них больше проблем. проще в родительской сущности иметь нуллабельные поля под вашу картинку. меньше джойнов - лучше спится, особенно с орм, где забыл поджойнить где-то продукт с картинкой и у тебя страница делает тыщи запросов
Павел
безотносиительно вопроса: я предпочитаю 1-1 избегать, от них больше проблем. проще в родительской сущности иметь нуллабельные поля под вашу картинку. меньше джойнов - лучше спится, особенно с орм, где забыл поджойнить где-то продукт с картинкой и у тебя страница делает тыщи запросов
Спасибо. Решили попробовать, так кажется довольно гибким с точки зрения управления картинками в будущем. Например удаление старых (которые null), или возврат какой либо из прошлых при желании. Всю малину портит уник генерируемый автоматом, не хочется отказываться от диффа миграций.
Konstantin
а если сделать это 1-m? уника тогда не будет
Павел
а если сделать это 1-m? уника тогда не будет
Думали, но тогда на одной стороне будет коллекция, что надо будет костылять потом.
Konstantin
а целостность (что картинок не более 1) контролировать кодом. ну или джоб ночами запускать какой?
Konstantin
Думали, но тогда на одной стороне будет коллекция, что надо будет костылять потом.
вам ничто не мешает сделать геттер getPicture(): ?Picture { return $this->pictures->first(); }
Павел
Просто по логике one to one, в коде будет one to many - программеры в будущем будут путаться
Павел
вам ничто не мешает сделать геттер getPicture(): ?Picture { return $this->pictures->first(); }
Это понятно, но по логике приложения нет коллекций.
Павел
И будут ломать голову, а че такое а зачем
Konstantin
ну приложение их не увидит, приложение геттером/сеттером/аддером будет оперировать. но я согласен, что это не супер-очевидно для разрабов
Konstantin
но такова жизнь: 1-1 - это 1-m с уником, я не уверен что это можно изменить или обойти как-то иначе
Konstantin
в целом, с доктриной так или иначе вас ждут проблемы с неудобными связями. типа м-м с дополнительным полем в таблице связке нельзя сделать, приходится делать 1-m + m-1
Павел
Просто one to one - это по идее логика же приложения, а не базы. А выходит зашилисб на базу :(
Konstantin
ну я говорю, можно срезать острые углы и оставить большой коммент в сущности, типа так надо
Konstantin
Ну это в целом норм. от 1-1 не ожидал такой подставы странной)
так нету в базе никаких 1-1 в этом проблема. в базе любое отношение - это множество с одной из сторон как минимум
Павел
Т.е. если бы констрйнта не было, то 1-1 в сущностях вполне был бы рабочим все равно, даже если бы база стала 1-м
Павел
Т.е. если я врчную уберу констрейнт и не буду пользоваться дифф - все ок будет
Konstantin
это тоже легкое wtf
Konstantin
потому что разраб в базе видит одно, а в коде другое
Konstantin
я вам точно говорю, ограничьтесь геттерами как я выше говорил и все
Nikolay
Т.е. если я врчную уберу констрейнт и не буду пользоваться дифф - все ок будет
Вся проблема в bidirectional, у 1-1 это вообще нежелательно, не говоря уже по другие типы связей
Nikolay
Павел
Только с одной стороны остается
А там только одна колонка в базе...
Павел
Не совсем понял
Я тоже не совсем понял, что остается "только с одной стороны", речь о констрейнте в базе. Он как был так и останется независимо от bidirectional
Sergey
Всем привет. Подскажите, а что с symfony flex случилось? Наш опс сказал пакет выпилить. Да и композер он стопорит из-за недоступности хоста. Есть какая-то ссылка на пост что случилось?
Vlad
переехали на гитхаб, раньше была отдельная инфраструктура
Sergey
Так а как щас симфа без флекса будет рецепты выполнять?
Vlad
рецепты дергается с гитхаба)
Sergey
Так сказали пакет выпилить…
Konstantin
наверное чтобы у вас на сайте баннер в поддержку украины не появился
Иван
Konstantin
флекс - достаточно простая плоскость внедрения. там выполняются 3rd-party скрипты без особого контроля, сегодня скрипт один - завтра другой. я не то чтобы оправдываю это, но безопсники мыслят примерно так
Konstantin
ну и сам лично я тоже запрещаю флекс у себя в компании, конфигурируйте блеать руками, больше понимания совершенных действий останется
Юра
А разве флекс наоборот не декларативный?
Юра
По-моему там идет конфиг файл типо это скопируй сюда, а тут зарегистрируй бандл
Павел
Embeded уже советовали?
Не решает задачи. Решил убрать связь на стороне имейджа, и сделать на стороне второй сущности одностороннюю.
Dmitriy
флекс очень легко выпилывается, смотрите рецепт
artem
А как переписать самопись от школоты, не ебнутся + не выложить на говнокод?
artem
Получить исходное ТЗ, написать с нуля
Я так и сказал. Это сообщение было проплакатся) мне изначально сказали что нужно функционал добавить)
artem
Я так и сказал. Это сообщение было проплакатся) мне изначально сказали что нужно функционал добавить)
Я нашел как описать увиденный код это со знакомым фронтом обсуждали код) у меня для таких случаев есть одно слово) сукаблядьпиздецнахуйдолбоебудалисебемозг
artem
Кто слышал про функцию include по всей программе?😧
artem
Бывает код и похуже
Та хоть mysqli вместо mysql уже счастье. Подготовленными запросами даже не пахнет
artem
Мне уже кажется что зп это рейт плюс услуги психолога
artem
Возможно это не так уж сложно переделать)
Так а нахер это было делать?) Это же ещё покупают. Я если фронт ок то неделю) но сегодня же не пятница 13
Юра
Любой самый хреновый код, это много много мелких кусков нормального кода. )
Юра
Смотри позитивнее
Юра
А работодателя можешь поздравить с тем что он сэкономил и попал на деньги
Null
Что за аншлаг сегодня?)
artem
А работодателя можешь поздравить с тем что он сэкономил и попал на деньги
Ага) я посмотрел фронт и зак должен быть очень счастлив)))
Юра
Есть что-то типо вордпресса на симфони?
Юра
Ну это скорее на компонентах симфы, вроде как там же не симфа целиком
Magzhan
Есть что-то типо вордпресса на симфони?
Sylius для интернет магазин BoltCMS как вордпресс Эти CMS на чистом Symfony
Null
sulu.io
Alexey Mishurovskiy
sulu.io
Она пипец сложная для осознания
Alexey Mishurovskiy
Но прикольная
Alexey Mishurovskiy
И для нормального блога требует эластик
Юра
Блин почему эта регулярка не матчит строку? ^.*$
Юра
если в строке несколько строк
Konstantin
флага /m не хватает
Konstantin
preg_match('/^.*$/m', $subject, $matches)
Юра
да с флагом работает
Юра
а почему без него не работает
Юра
$ вроде просто говорит что позиция в конце строки
Юра
любой симбол в конце строки