Павел
Параметры как у тебя далее, с ними всё ок
Павел
Павел
The Ant
я так делал, но чето сломалось, уже не вспомню че. Давно ппц делал.
The Ant
Nikolay
The Ant
куда?
Павел
The Ant
в бд енам, и он нулабл
The Ant
да
Павел
ппц)
Павел
Павел
Nikolay
Примерно такая реализация была
class UserQueryProvider {
public function getUserBySpecification(Specification $specification {....}
class Specification {
private $id;
public function byUserId($userId) {
$this->id = $userId;
}
}
Konstantin
надо прям точно знать что делаешь, когда пишешь такое. и надо это в очень узком круге задач
The Ant
Konstantin
не, не пофигу: можно синтакс эррор какой поймать и не заметить. в 99.999% нужно ловить не выше \Exception
Konstantin
Konstantin
потому что throwable включает в себя https://www.php.net/manual/ru/class.error.php
Konstantin
Error
      ArithmeticError
        DivisionByZeroError
      AssertionError
      ParseError
      TypeError
        ArgumentCountError
Konstantin
то есть ты поймаешь и проглотишь, например, исключение про то, что ты передал мало аргументов в функцию. то есть явную ошибку
The Ant
И это тоже рофл кстати да)
ниче не рофл, если статус не установил при создании, то его инету же. Не делать же дефолтный в конструкторе. И какой дефолтный?! created? банальщина )
Павел
Konstantin
иметь дефолтным статус NEW вполне нормальная практика
The Ant
у меня в бд нуллабл енам ) как мне в коде его отобразить то?
Konstantin
не делать нуллабл енам в бд?
The Ant
если не делать нуллабл, то енаму придется дефолт задать. А это неочень тоже
Konstantin
или это условие задачи, на которое ты повлиять не можешь?
The Ant
потому что когданить в миграции переименуют значение, а дефолт забудут. и мучайся потом с поиском ошибки )
The Ant
да просто ебучий человеческий фактор, дефолты зло
The Ant
решил жизнь без них проще :D
The Ant
довольно часто запросами делают какие-то действия в бд
Konstantin
и вставку?
The Ant
это у меня, не знаю как у вас ) поэтому надо чтоб правила совпадали по максмуму по возможности
Konstantin
ну пусть тогда будет дефолт и там и там, это все равно хранится рядом в одном атрибуте на поле сущности
Konstantin
просто любой нулл - это лишний иф в коде, потенциально забытый и приведший к NPE. иде из коробки тоже не подсвечивает что переменная может быть нуллом и надо бы это проверить
Konstantin
это на самом деле неприятная проблема, причем сломаться оно может когда угодно, чуть забудется все и привет. я не настаиваю, на самом деле, но крайне рекомендую держать в голове "чем меньше нуллов в коде - тем лучше". это правда сильно улучшит качество кода
The Ant
в целом всё так, но я в свое время устал от дефолтных значений в бд :(
Konstantin
понятно, что есть абсолютно легальные места, где без нулла никуда, но в остальных лучше избегать
Konstantin
самое мерзкое, кстати, это нуллабельные массивы
The Ant
Gleb
сделай свой гидратор делов то на 3 минуты
А можно какой-нибудь полезной ссылочкой на тему гидрации кинуть в меня? Я пару подходов делал к этой теме. В кратце понял что это "просто добавь воды",т.е. заполнение данными, но более глубоко понять пока не получилось. Материалы находились в духе "ты и так это уже знаешь, на этом останавливаться мы не будем", допускаю что я пока не могу правильно сформулировать запрос по теме.
Павел
Получше же да? чем чем недоразумение с ручным присоединением релейшенов :D
Штука прикольная, но минус есть - модель чтения (твой выходной json) зависит от модели записи. Хотя не самая большая беда. Вся эта штука решается своим трансформером.
Я такой писал, по неймингу ключей, чтобы правила были в самих именах колонок: одно подчеркивание one-to-one, два подчеркивания one-to-many. Но внутри страх, даже не хочется между проектами таскать. Либу бы найти, или переписывать с норм реализацией. Но было очень удобно. Примеры, именования ключей, черточки в итоге убирались, и все это превращалось в вложенные массивы, автоматом.
lastCall_manager_name превращался в $data['lastCall']['manager']['name'] = $valueFromDb
Павел
The Ant
Штука прикольная, но минус есть - модель чтения (твой выходной 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
Мне кажется, можно свою команду поверх родной написать, где из аргумента будет накладываться кастомный схема фильтр.
Но я сам так никогда не делал, не уверен.
Юра
Тогда после миграции получится что бд не соответствует энтитям? Как-то не очень
artem
Юра
Я так понимаю сервис контейнер уже не заинджектить в 6.1?
Юра
По крайней мере автовайрингом не выходит. Пишет нет такого сервиса
Konstantin
да ну
Юра
А все. Я узнал про tagged_locator. Симфа как всегда лучшая