Павел
а как без него? не работает
->andWhere('p.id in (:ids)')
Павел
Параметры как у тебя далее, с ними всё ок
The Ant
->andWhere('p.id in (:ids)')
там дбал, и оно так не работает ) я бы сделал
The Ant
я так делал, но чето сломалось, уже не вспомню че. Давно ппц делал.
The Ant
куда?
The Ant
в бд енам, и он нулабл
Павел
в бд енам, и он нулабл
У тебя поле статус nullable?
The Ant
да
Павел
ппц)
Alexey Mishurovskiy
в бд енам, и он нулабл
это как ? ))) енам шредингера ?
Павел
это как ? ))) енам шредингера ?
И это тоже рофл кстати да)
Alexey Mishurovskiy
И это тоже рофл кстати да)
Это енам с сюрпризом 😂
Павел
© The Ant Technologies
Лучше этого не сказать
Konstantin
https://pastebin.com/AYNAKDvt
Throwable ловить плохо, туда попадут совсем левые ошибки
Nikolay
Примерно такая реализация была class UserQueryProvider { public function getUserBySpecification(Specification $specification {....} class Specification { private $id; public function byUserId($userId) { $this->id = $userId; } }
Konstantin
надо прям точно знать что делаешь, когда пишешь такое. и надо это в очень узком круге задач
Павел
Throwable ловить плохо, туда попадут совсем левые ошибки
А не пофигу ли? Лучше указать в интерфейсе потом "Могут выскачить совсем левые ошибки" ?
The Ant
Throwable ловить плохо, туда попадут совсем левые ошибки
мне надо в любом случае вернуть чето )
Konstantin
не, не пофигу: можно синтакс эррор какой поймать и не заметить. в 99.999% нужно ловить не выше \Exception
Konstantin
мне надо в любом случае вернуть чето )
нене, все так, ток catch \Exception
Konstantin
потому что throwable включает в себя https://www.php.net/manual/ru/class.error.php
Konstantin
Error       ArithmeticError         DivisionByZeroError       AssertionError       ParseError       TypeError         ArgumentCountError
Konstantin
то есть ты поймаешь и проглотишь, например, исключение про то, что ты передал мало аргументов в функцию. то есть явную ошибку
The Ant
И это тоже рофл кстати да)
ниче не рофл, если статус не установил при создании, то его инету же. Не делать же дефолтный в конструкторе. И какой дефолтный?! created? банальщина )
Konstantin
ниче не рофл, если статус не установил при создании, то его инету же. Не делать же дефолтный в конструкторе. И какой дефолтный?! created? банальщина )
нет, енамы не должны быть нуллами, ты берешь тип-сумму готовую и зачем-то разбавляешь его еще одним вариантом. ок, я могу это понять, если ты экономишь на размере таблицы/индекса, но в коде чем меньше нуллов - тем проще живется. в пхп особенно
Konstantin
иметь дефолтным статус NEW вполне нормальная практика
The Ant
у меня в бд нуллабл енам ) как мне в коде его отобразить то?
Konstantin
не делать нуллабл енам в бд?
The Ant
если не делать нуллабл, то енаму придется дефолт задать. А это неочень тоже
Konstantin
или это условие задачи, на которое ты повлиять не можешь?
The Ant
потому что когданить в миграции переименуют значение, а дефолт забудут. и мучайся потом с поиском ошибки )
The Ant
да просто ебучий человеческий фактор, дефолты зло
The Ant
решил жизнь без них проще :D
Konstantin
потому что когданить в миграции переименуют значение, а дефолт забудут. и мучайся потом с поиском ошибки )
поэтому я бы задавал дефолт в коде (если нет другого источника данных в эту таблицу кроме твоего проекта). дублировать логику между бд и кодом не нужно, достаточно в коде выразить что дефолтный статус - такой-то
The Ant
довольно часто запросами делают какие-то действия в бд
Konstantin
и вставку?
The Ant
это у меня, не знаю как у вас ) поэтому надо чтоб правила совпадали по максмуму по возможности
The Ant
и вставку?
особенно вставку
Konstantin
ну пусть тогда будет дефолт и там и там, это все равно хранится рядом в одном атрибуте на поле сущности
Konstantin
просто любой нулл - это лишний иф в коде, потенциально забытый и приведший к NPE. иде из коробки тоже не подсвечивает что переменная может быть нуллом и надо бы это проверить
Konstantin
это на самом деле неприятная проблема, причем сломаться оно может когда угодно, чуть забудется все и привет. я не настаиваю, на самом деле, но крайне рекомендую держать в голове "чем меньше нуллов в коде - тем лучше". это правда сильно улучшит качество кода
The Ant
в целом всё так, но я в свое время устал от дефолтных значений в бд :(
Konstantin
понятно, что есть абсолютно легальные места, где без нулла никуда, но в остальных лучше избегать
Konstantin
самое мерзкое, кстати, это нуллабельные массивы
The Ant
https://pastebin.com/AYNAKDvt
Получше же да? чем чем недоразумение с ручным присоединением релейшенов :D
Gleb
сделай свой гидратор делов то на 3 минуты
А можно какой-нибудь полезной ссылочкой на тему гидрации кинуть в меня? Я пару подходов делал к этой теме. В кратце понял что это "просто добавь воды",т.е. заполнение данными, но более глубоко понять пока не получилось. Материалы находились в духе "ты и так это уже знаешь, на этом останавливаться мы не будем", допускаю что я пока не могу правильно сформулировать запрос по теме.
Павел
Получше же да? чем чем недоразумение с ручным присоединением релейшенов :D
Штука прикольная, но минус есть - модель чтения (твой выходной json) зависит от модели записи. Хотя не самая большая беда. Вся эта штука решается своим трансформером. Я такой писал, по неймингу ключей, чтобы правила были в самих именах колонок: одно подчеркивание one-to-one, два подчеркивания one-to-many. Но внутри страх, даже не хочется между проектами таскать. Либу бы найти, или переписывать с норм реализацией. Но было очень удобно. Примеры, именования ключей, черточки в итоге убирались, и все это превращалось в вложенные массивы, автоматом. lastCall_manager_name превращался в $data['lastCall']['manager']['name'] = $valueFromDb
Павел
Но он еще даст и запись, что не очень
The Ant
да и пофиг )
The Ant
я не лютый интерпрайзник, у которого очко горит от неправильно поставленной запятой в конце массива на код ревью )
Павел
Так то еще и вьюхи можно писать вместо запросов, и натравливать на них модельки тоже же AR или просто гидрировать, через сериалайзер) А вытаскивать через * ))
Павел
Хотя не, сериалайзер тут не в тему, а вот через вьюхи некоторые юзают :)
The Ant
в целом GQL по сути базу шарит, как и жсонапи. И никто не парится на этот счет. Те, редкие отчеты, которые не вписываются в общую схему можно и на чистом скуле бахнуть.
The Ant
так что хз, не вижу ниче плохого
Andrei
Доброго дня. Не подскажите по доктрине? Есть ли альтернатива schema_filter: .... когда есть ряд таблиц которые не надо трогать когда migrations:diff делаешь, но при этом они должны быть видны таки доктрине?
Konstantin
хороший вопрос, насколько я знаю - никак. но это может получиться довольно неплохой фичей, не хотите им ишью оставить про это?
Konstantin
если кастомную фабрику миграций накостылять, нельзя ли там сделать проверку на вхождение имени таблицы в стоплист?
Konstantin
с виду - нельзя, да, фабрика уже готовой миграцией оперирует
Andrei
мда... печаль
Konstantin
соглашусь, пожалуй
Andrei
При переезде с другого фреймворка крайне бы полезная вещь была
Andrei
соглашусь, пожалуй
а как то указать конкретную сущность или неймспейс для которой надо миграцию создать получается тоже нельзя?
Null
Мне кажется, можно свою команду поверх родной написать, где из аргумента будет накладываться кастомный схема фильтр. Но я сам так никогда не делал, не уверен.
Юра
Тогда после миграции получится что бд не соответствует энтитям? Как-то не очень
Юра
Я так понимаю сервис контейнер уже не заинджектить в 6.1?
Юра
По крайней мере автовайрингом не выходит. Пишет нет такого сервиса
Konstantin
да ну
Юра
А все. Я узнал про tagged_locator. Симфа как всегда лучшая