Рома
в лaре было через create вот и написал так, чтоб сразу обновлял
Михаил
нет - flush это аналог save
А точнее "Просчитай все изменения которые произошли и отправь их в бд одной транзакцией"
Рома
пхаха код на ларе
public function createFromArray(array $data): Stmt
{
return Stmt::query()->create($data);
}
/**
* Обновление из массива.
*
* @throws QueryException
*/
public function updateFromArray(Stmt $stmt, array $data): Stmt
{
$stmt->update($data);
return $stmt;
}
Михаил
persist - это способ попросить UnitOfWork учесть эту сущность. Ввести её в сделку
Михаил
Рома
да на с# подобное есть entity framework вот с ним я работал) тоже самое
Павел
Михаил
Павел
Павел
Это из раздела плохих советов, но рабочих в стиле лары)
Рома
Serializer используются везде
Рома
и в django и в fast api
Рома
и на C#
Павел
Рома
ок спасибо изучу
Павел
Можно массив намапить на сущность в 1 строку
Рома
https://symfony.com/doc/current/components/serializer.html
Рома
это?
Павел
Павел
Да, там есть о чем я говорил
Рома
да не это все равно лишняя нагрузка на код, нет простой реализации
Рома
пока через сетеры сделаю)
Рома
updateAll нет такого метода
Михаил
UpdateStmtDTO делаешь через ArgumentResolver
или вроде в 7 симфе есть маппер уже
@dexplon есть же?
Михаил
Павел
Михаил
Рома
для чего писать все через get и set где то это имеет смысл, но тут в модели
Михаил
А, вот как
https://symfony.com/blog/new-in-symfony-6-3-mapping-request-data-to-typed-objects
Павел
Михаил
Павел
from Array внутри сушности модели плохо.
Павел
Рома
он не сработает класс защещенный
Павел
Михаил
Михаил
Нет, ты можешь конечно её под интерфейс положить
Михаил
но пихать в доменную сущность инфраструктурный дто - странно
Михаил
Но я согласен, время жизни dto становится очень маленьким, буквально 1 строчка. Я пока не решил эту проблему
Рома
в чем преимущества симфони? кроме того что один блогер сказа в актив рекорд можно хранить бизнес логику, хотя так уже сейчас не делают
Рома
я и в entity записал пару констант)
Рома
мне единсвенное нравится что маршруты пишут полностью и они читаемы и сразу привязаны к методу
в ларе пока найдешь этот маршрут по группам, префиксам, посмотришь из 100 имеющихся что подходит
Михаил
Выглядит странно и неправильно , но спорить не буду
Но смысл в том что у меня не анемичные сущности с геттерами и сеттерами а набор методов по её обновления и геттеры
User::create($createContext);
User::requestPasswordChange($passwordChangeContext)
User::updateBio($updateBioContext)
Сама сущность и вот эти контексты хранятся в доменке.
В итоге даже если я без юз-кейса дёргаю сущность - то у меня всё чистенько.
А дто нужна чтобы принять в себя реквест, провалидировать (косвенно) и трансформировать в доменный контекст для обновления сущности.
Павел
Верю что в Ларе можно написать хороший код ( многие не верят). Но делают это в процентном соотношении в симфони больше и чаще
Павел
Лара очень интересная для быстрой разработки особенно если использовать серверный фронт.
Рома
да сейчас симфони похож на лару с бандлами и прочими улучшениями, раньше это вообще был кошмар, собирать вручную и настраивать этот конструктор. Не сложнее лары, кода больше и рутины
Павел
Даже если взять ваши примеры, и что вы пытаетесь как в Ларе, то в Ларе можно лучше. Т.е. И в Ларе вы писали на скорость а не на жёсткость и качество.
Это не хорошо или плохо, это "другое"
Рома
так как принято было на работе
хотя бы архитектура была)
а на моем прошлом месте все в контролеры писали модели по 2000 строк ) и sql чистые
Dmitriy
Если на ларе писать хороший код, то нафига тогда она нужна
Михаил
Михаил
зато не тупой толстый контроллер
Михаил
Или вообще шиза когда вызовы писали прям в роутере
Рома
да и методы по 100+ строк
Михаил
Или когда делали объекты ресурсов и внутри них бизнес логика
Михаил
ну и да, отдельный челендж собрать всю бизнес логику воедино
Павел
Павел
Скорее это уже вопрос не к ларе а к программистам
Павел
Если использовать анемик, то в симфони тоже всё в сервисах
Павел
Просто сделать толстую сущность в ларе проблемно как раз из-за АР
Nikolay
Дто создаёт другой объект?
Уже тысячу раз обсужадли. DTO может делать все что угодно. Ее основная задача быть сериализуемой и десереализуемой. Если добавить в нее метод Parse и возвращать нужный объект из нее, ничего страшного не происходит. Можно сказать, что принцип единой ответственности нарушается, но это уже перегиб
Nikolay
Просто кто-то один сказал, что нельзя. Я такое точно у Елисеева слышал и все подхватили
Nikolay
Nikolay
Это вторая или третья страница документации Routing
Nikolay
Павел
Nikolay
В той же симфони сейчас Dto используют в параметрах метода контроллера и валидируют. Но как же получается - антипаттерн?
Павел
Павел
Павел
Ну вот мы пишем вот так
Nikolay
https://symfony.com/blog/new-in-symfony-6-3-mapping-request-data-to-typed-objects
Nikolay
Ну вот же
Nikolay
Правила валидации внутри DTO