Nikolay
Nikolay
TryParse
Рома
симфони предлагает состовлять сырые dql запросы?
Nikolay
Вот теперь с чистой совестью могу идти дальше. Статьи, куски кода, все привел:)
Михаил
Nikolay
Сорри, что мог потревожить сложившиеся устои:)
Михаил
Михаил
Причем к этому и приходишь через какое-то время
Павел
Рома
'SELECT category FROM App\Entity\Category as category'
емае и зачем?
Михаил
Рома
ясно воспользуюсь билдером)
Nikolay
Не ну серьезно парень, почитай сначала документацию
Nikolay
Хотя доктрина да, это ужас:)
Nikolay
Михаил
Рома
https://symfonycasts.com/screencast/doctrine-queries/dql
Nikolay
Михаил
Вообще не понимаю от куда ты там пример DQL нашёл
Обычно если хотят сырой запрос то используют rsm
<?php
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping();
// build rsm here
$query = $entityManager->createNativeQuery('SELECT id, name, discr FROM users WHERE name = ?', $rsm);
$query->setParameter(1, 'romanb');
$users = $query->getResult();
Михаил
RSM Чем хорош - он добавляет сущность в UnitOfWork и дальше с ней можно работать через EM
Рома
я просто думал есть что то удобнее кверибилдера
а доки по DQL даже нет
Nikolay
нативный-нативный? То connection^)
Nikolay
PDO
Михаил
<?php
use Doctrine\ORM\Query\ResultSetMapping;
$rsm = new ResultSetMapping();
$sql = "
INSERT INTO users (...)
ON CONFLICT hui_pizda
DO UPDATE set ...
RETURNING users.*
"
$query = $entityManager->createNativeQuery($sql', $rsm);
$query->setParameters($data);
$user = $query->getResult();
Михаил
Вообще ResultSetMapping может делать такое
Михаил
то есть ты можешь создать пользака нативным запросом
Михаил
но если пользак уже есть - то просто обновить и не отлететь в Entity Manager Is Closed
Михаил
и плюс к тому пользак добавится в Entity Manager где дальше ты можешь с ним нормально работать
Михаил
каеф
Михаил
ларка сосат
Рома
ну понятно в общем ещё и выбирать между DQL и билдером который медленее собирает тот же DQL
Рома
а вот верный подход
$qb = $entityManager->createQueryBuilder();
$qb->select('u')->from('User', 'u');
Михаил
Пацаны мы же не будем ему говорить про?
$this->getOneBy(['status' => $status, 'createdAt' => $createdAt], ['id' => 'DESC']);
Рома
а если не one?
Михаил
$qb = $entityManager->createQueryBuilder();
это синоним
$qb = $entityManager->createQueryBuilder();
$qb->select('u')->from('User', 'u');
но только если ты вызываешь в контексте репозитория
Рома
Required parameter '$alias' missing
Михаил
Михаил
ну или findAll
Михаил
у репозитория ещё есть matching которий criteria принимает
Рома
Nikolay
Михаил
ну а как ты думаешь что не так?
Михаил
Nikolay
Такое чувство, что код в блокноте пишется, и подсказок никаких нет
Рома
о да спасибо
Рома
public function search(?string $status, ?string $createdAt, ?string $updatedAt)
{
return $this->findBy(['status' => $status]);
}
Рома
есть польза от ServiceEntityRepository такое бы в лару)
Рома
а like как вставить?
Nikolay
Михаил
Циклом потом пройдись и найди
Рома
$qb = $em->getRepository("Orders")->createQueryBuilder('o');
$result = $qb->where('o.OrderEmail = :email')
->andWhere($qb->expr()->like('o.Product', ':product'))
->setParameter('email', 'some@mail.com')
->setParameter('product', 'My Products%')
->getQuery()
->getResult();
нашел правильный синтаксис
Рома
xpressionBuilder = Criteria::expr();
$expression = $expressionBuilder->contains('fieldName', 'value');
$collection->matching(new Criteria($expression));
ещё такое есть что за Criteria
Михаил
Я тебе его нашёл 1 дисскуссию назад
Михаил
Михаил
Как коллекций в бд, так и объектов коллекций
Рома
public function search(?string $status, ?string $created_at, ?string $updated_at)
{
$qb = $this->createQueryBuilder('s')->select('stmt');
if ($status) {
$qb->andWhere('s.status = :status')
->setParameter('status', $status);
}
return $qb->getQuery();
}
"detail": "[Semantical Error] line 0, col 7 near 'stmt FROM App\\Entity\\Stmt': Error: 'stmt' is not defined.",
"class": "Doctrine\\ORM\\Query\\QueryException",
уже бомбит)
Павел
https://blog.ploeh.dk/2022/09/12/coalescing-dtos/
Не понятно что такое reservation сушность или что. Если сущность вопрос с зависимостями остаётся открыт. Если нет, то она создаёт команду или что. Опять же правила валидации, а если они более сложные. Копипастить логику сложную логику валилации между дто?
Опять же если это дто, куда оно передавалось и зачем это делать сборку именно в дто?
В общем хз, рандомная статья без профита. Для чего все это?
Если валидация еще возможно ок, тип объект проверяет свою сборку на типы, хотя спорно тоже для дто,то сборка сущности - херня какая то без ответов про зависимости
Рома
$qb = $this->createQueryBuilder('s')
->select('stmt')
->from('stmt', 's');
if ($status) {
$qb->andWhere('s.status = :status')
->setParameter('status', $status);
}
return $qb->getQuery();
подскажите что не так
"detail": "[Semantical Error] line 0, col 36 near 'stmt s WHERE': Error: Class 'stmt' is not defined.",
"class": "Doctrine\\ORM\\Query\\QueryException",
Nikolay
Рома
тоже самое
Рома
https://www.youtube.com/playlist?list=PLd-N2eP0f6v4S12e1W52lcWcBObMpZeAs
ладно продолжу смотреть курс)
Nikolay
Не понятно что такое reservation сушность или что. Если сущность вопрос с зависимостями остаётся открыт. Если нет, то она создаёт команду или что. Опять же правила валидации, а если они более сложные. Копипастить логику сложную логику валилации между дто?
Опять же если это дто, куда оно передавалось и зачем это делать сборку именно в дто?
В общем хз, рандомная статья без профита. Для чего все это?
Если валидация еще возможно ок, тип объект проверяет свою сборку на типы, хотя спорно тоже для дто,то сборка сущности - херня какая то без ответов про зависимости
Там все описано. Ваш подход к доказательствам я уже понял:) Тут логика не поможет. Вы если решили, что у вас правильно, то так и будет. Чтож, хорошо:)
Павел
Nikolay
А те кому реально было интересно узнать, думаю поняли, что расширять её можно
Павел
Ок. Как я сказал гораздо выше, можно все
Nikolay
Статья, Книга. Вопрос был можно расширять? Можно. Есть статьи? Есть. Есть книги? Есть. Даже аспектное программирование и им расширили дто. Все ос альное техническая реалищация
Nikolay
С какими зависимостями?
Павел
Когда вы пихаете логику в дто суть больше чем нихера, то это влечёт риск того что не сможете её расширить или же в дто пихать зависимости что дичь. А если не сможете расширить и пропихнуть зависимости, то выходит надо выносить из дто. И зачем иметь этот риск и рефакторинг если можно не иметь.
Павел
Например reservationCategory
Nikolay
То есть нужны тебе зависимости ну проинжекть. Ещё раз метод parse создает из менее структурированной сущности более структурировпнную. Не хочешь инжектить не используя этот способ и все
Павел
Павел
Ну ок
Nikolay
Хочешь - инжекть. Он остаётся сериализуемыи? Да.
Вот есть у меня задача, сделать User, я использую parse. Это не значит, что это единственно возможный подход. Вы же предоагаете мне делать вообще все в ней
Nikolay
Ну расширяй своё дто, чем метод Parse потарадает?
Nikolay
А то уже началось. И побочные методы добавляем и все что в голову вбредет. Чем Parse будет отличаться от toArray?