Блог хеллоуворлдщика

Категория [PHP]


SELECT COUNT(*) FROM (sub_query) в Doctrine 2

Не мог не заметить, какое количество вопросов по этому поводу, т.к. сам когда-то искал на это ответ. Проблема в том, что хорошего ответа нет.

Если у вас сложный запрос и вам нужно получить по нему COUNT(*), то в сети можно найти вариант вида:

$subQuery = $qb->select('main.id')
    ->from('Order\Entity\Order', 'main')
    ->where('main.published = :published')
    ->setParameters([
        'published' => true,
    ]);
 
$qb->select('COUNT(o)')
    ->from('Order\Entity\Order', 'o')
    ->where($qb->expr()->in('o.id', $subQuery->getDQL()))
    ->setParameters($subQuery->getParameters());

Но такой запрос очень медленный. Он подойдет для незначительного объема данных.

Читать далее

Изолированный запуск тестов Codeception

Изолированный запуск тестов Codeception

Данное решение подойдет только для тех, кто разбил тесты на модули, а не тестирует сразу весь проект.

Когда ваш проект большой и все ООП, то это кушает много памяти. А вы еще, как на зло, заюзали некогда очень популярный среди разработчиков на PHP - Codeception. Я не буду здесь критиковать Codeception, личный выбор каждого, но, ИМХО, если встанет выбор между Codeception и PHPUnit, то выбирайте второе. ;) Но, здесь мы собрались по другой причине...

Причина написания данной статьи является выход таймаута или переполнение памяти при запуске тестов, что никак не решается в Codeception из коробки, но прекрасно решается в PHPUnit.

Но, все решаемо и я поделюсь с вами небольшим куском кода, который вы можете доработать, или использовать, как есть.

Читать далее

Генератор HTML форм или HTML Builder для PHP

Генератор HTML форм или HTML Builder для PHP

Все full stack девелоперы вынуждены/любят (нужное подчеркнуть) работать с фронтом. И там, где на проекте отсутствует фронт отдельным приложением мы используем html билдеры. Как правило, каждый фреймворк оснащен своим билдером, но иногда этот билдер может оказаться не таким функциональным или удобным, как хотелось. А иногда и вовсе отсутствует. И здесь, как всегда, я натыкаюсь на "необходимость".

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Читать далее

XML конструктор

Понадобилось создать запрос в формате application/xml/text/xml? Или создать sitemap.xml? И ты в поисках обертки над XMLWriter? Тогда, ты её уже нашел!

Данная обертка позволяет создать XML файл из массива без особой возни и скромной затратой времени.

Latest Stable Version Total Downloads Latest Unstable Version License Build Status Coverage Status

Ссылка на GitHub: https://github.com/bupy7/xml-constructor

Читать далее