Юра
Это так кажется только что да что там делать
Роман
Юра
Так магенто это что-то как вордпресс для блогов только в екомерс?
Юра
Или не настолько популярен?
S
Юра
А она интегрируется с бухучетом?
Юра
Или там просто экспорт и потом импорты писать куда надо?
Роман
Alexey
Опять же, может конечные цели битры и магенты схожи, но это небо и земля. Причём битрикс это земля.
Роман
Хотя, если дописывать в Битрикс что-то новое на ванильном пыхе, используя готовую систему как неизменяемый изолированный контейнер-хранилище, то терпимо. ))
Alexey
С родным чекаутом битры однозначно.
Alexey
Да и пожалуй со всем, что требует основательной кастомизации
A
коллеги, подскажите, а где лучше реализовать код:
мне нужно получить кол-во сущности User, который удовлетворяет определенным критериям.
Т.е. произвольный метод, который возвращает результат выполнения агрегированных функций.
Такие методы нужно в репозитории сущности писать?
Юра
Угу
A
Угу
а есть какие-то устоявшиеся принципы нейминга таких методов?
Иван
Nikolay
A
countNotBanned()
или
getCountNotBanned() ?)
Иван
findAll(Filter $filter): Paginator
Иван
а Paginator implements Countable
A
а через пагинатор мы не усложняем ?
Иван
а через пагинатор мы не усложняем ?
нет, скорее засовываем в один метод и получение данных и получение количества
понятно дело и то и другое должно через ленивки реализовываться
Pavel
А само апи друпала как? Понятное?
Иван уже исчерпывающе ответил, но я дополню немного)
Drupal это cmf с готовой архитектурой, очень большой игрок. С версии 8 переписан на ООП и использует компоненты symfony. API у него очень большое и вот тут встаёт вопрос в том, что нужно получить в итоге.
Скажу субъективно при условии прямых рук исполнителя. Если надо сделать среднестатистический сайт, надёжно и быстро - Drupal один из лучших и можно спать спокойно. Если нужно сделать какой то микросервис, Drupal вероятно будет избыточен.
В любом случае если знаете symfony, в современном Drupal будете испытывать удовольствие от кода.
Хотите берите модуль, хотите пишите сами, что угодно на выбор.
Можно сделать сущности через админку, можно сущность захардкодить - все что угодно.
Юра
А работа с бд там через доктрину идет?
Юра
Эх
Pavel
Ну doctrine это и не symfony) отдельный продукт
A
а если у репозитория есть метод findAllWithUser()
в каких-то местах, мне нужно получить кол-во записей, которые возвращает вышеописанный метод.
на практике лучше использовать count(findAllWithUser())
или лучше отдельным метод дублировать, который будет возвращать сразу скалярку ?
A
есть подозрение, что доктрина не всегда может правильно оптимизировать в таких случаях count(findAllWithUser())
Елнур
A
A
и не понятно, использовать существующий метод репозитория, который возвращает данные, и обернуть его в count() функцию.
или писать новый метод репозитория, который будет возвращать скалярку
Елнур
Если пагинации нет, но у вас очень большое количество элементов, то получив все элементы, будет использоваться много озу
Елнур
Если так и так получаете все элементы, то зачем ещё один запрос? Лучше просто count()
A
а разве доктрина но оптимизирует подобные запросы?
A
т.е. если я не использую данные, то сам запрос не будет срабатывать
A
если не ошибаюсь.
возможно и не прав
Елнур
Konstantin
Иван
Konstantin
доктрина по умолчанию не генерит подзапросы. похоже на то что ее руками заставили это написать
Konstantin
впрочем, могу заблуждаться, но это не похоже на запрос от орм
Иван
это скрин двухлетней давности из пагинатора доктриновского
Konstantin
это pagerfanta?
Елнур
я раньше использовал knp paginator
Елнур
Елнур
$qb = $this->em
->createQueryBuilder()
->from(Entity::class, 'e')
// ->where('') other stuff
;
$count = $qb
->select('COUNT(e) cn')
->distinct(true)
->getQuery()
->getSingleScalarResult();
$entities = $qb
->select('e')
->setMaxResult(30) // Если нужно ограничить количество результатов
->getQuery()
->getResult();
Konstantin
Konstantin
я ровно о том же
A
так и сделал, спасибо!
A
А как такое можно навернуть в query builder?)
$this->createQueryBuilder('a')
->andWhere('a.:date_field = 1')
->setParameter('date_field', $date_field)
A
мне для приватного метода-хелпера надо)
Иван
не надо так делать
A
почему?
A
безопасность?
Иван
во первых это не работает так
во вторых безопасность
Елнур
А запрос andWhere формировать через sprintf
A
http://dl4.joxi.net/drive/2022/03/18/0037/0052/2453556/56/e9b32e68d4.jpg
A
просто хочется как-то от дублирования избавиться
Елнур
sprintf('a.%s = 1', $date_field)
A
спасибо
Елнур
A
подскажите, а для объекта Symfony\Bridge\Twig\Mime\TemplatedEmail
пытаюсь передать такой контекст array('user' => $user)
$user- объект
A
так нельзя делать? почему-то ошибка..
Nikolay
Ivan
Ivan
$tpl = new TemplatedEmail();
$tpl->context([
'text' => $email->getText(),
]);
Работает
A
А зачем ты обьект передаешь?
у меня шаблону использует все свойства юзера. и обычно из контроллера я туда (в шаблон) передавал объект.
сейчас в шаблон письма хочу тоже передать объект, чтобы н дубливать все свойства
A
аля
name => user.getName()
...
хочу понять, в чем проблема, почему так нельзя делать?