ORM Query Builder от CodeIgniter имеет методы класса практически для любого доступа/операции к базе данных, о которой вы только можете подумать. В этом посте я расскажу о некоторых доступных методах получения результатов запросов на уровне агрегатов. Примеры в этом посте отображают цепочку методов Query Builder для получения результатов, которые вы получите из необработанного запроса MySQL. Продолжайте читать, чтобы увидеть больше…

Самореклама:

Если вам нравится содержание, написанное здесь, во что бы то ни стало, поделитесь этим блогом и вашими любимыми сообщениями с другими, кому это может быть полезно или нравится. Поскольку кофе — мой любимый напиток, вы даже можете купить мне его, если хотите!

Прототип запросов MySQL

При работе с внутренним PHP-кодом я обычно прототипирую запросы MySQL, используя либо MySQL Workbench, либо phpMyAdmin. Получив правильные результаты запроса, я перевожу запрос MySQL на слой PHP. Для приложений, написанных на ядре PHP, я обычно использую класс PDO.

Однако при использовании CodeIgniter 4 (который в настоящее время является моим предпочтительным PHP-фреймворком) вы можете использовать любой из этих вариантов:

Для примеров в этом посте я буду использовать методы класса Query Builder, специфичные для данных на уровне агрегации.

Совокупные результаты запроса с использованием MySQL

Как разработчик SQL-first, я могу честно сказать, что SQL — мой любимый язык программирования, и я удобно пишу запросы MySQL. При этом я ценю полезность ORM.

В моем конкретном случае, поскольку я использую инфраструктуру CodeIgniter, комбинация моделей CodeIgniter и класса Query Builder, среди прочего, делает запросы довольно простыми.

Вот один из таких случаев, в котором у меня не было особых проблем с получением тех же результатов запроса с использованием методов ORM класса CodeIgniter Query Builder, в отличие от необработанного запроса MySQL. Я не считаю, что один подход лучше или более валиден, чем другой. Это всего лишь мой опыт, когда я изучаю CodeIgniter и знакомлюсь с классом Query Builder и встроенными функциями моделей, предоставляемыми фреймворком.

Давайте рассмотрим этот запрос MySQL, который извлекает агрегированные данные по некоторым интересующим меня показателям и статистике ходьбы:

Ничего экстравагантного. Типичный запрос с использованием агрегатных функций SUM(), COUNT(), MIN() и MAX().

Приведенный выше запрос возвращает следующие результаты:

Совокупные результаты запроса с использованием методов класса CodeIginiter Query Builder

Но легко ли воспроизвести этот тип запроса — и что более важно — результаты запроса с помощью методов класса Query Builder в CodeIgniter 4? Они абсолютно.

Давайте посетим этот метод CodeIgniter, который у меня есть в классе, который расширяет модель CodeIgniter:

Четыре ключевых метода агрегатного типа Query Builder, используемые в приведенном выше методе модели:

  1. selectMin() — Сопоставляется с: SELECT MIN(field_name)
  2. selectMax() — Сопоставляется с: SELECT MAX(field_name)
  3. selectSum() — Сопоставляется с: SELECT SUM(field_name)
  4. selectCount() — Сопоставляется с: SELECT COUNT(field_name)

Округление с помощью методов groupBy() и orderBy() завершает запрос.

(Примечание. Все 4 метода принимают необязательный второй параметр, используемый для переименования поля. Я думаю об этом в том же контексте, что и псевдоним столбца в MySQL с использованием ключевого слова AS.

Метод модели shoeAnalytics() дает такие же результаты запроса, как и версия запроса MySQL, показанная ранее. Глядя на них в браузере с помощью PHP-метода print_r(), мы видим, что все данные есть:

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

Метод shoeAnalytics() теперь может предоставлять эти конкретные результаты запроса любым представлениям или библиотекам, которым нужны данные.

Другие методы класса CodeIgniter Query Builder

Какие методы класса CodeIgniter Query Builder, по вашему мнению, хорошо сопоставляются с соответствующим аналогичным выражением SQL? Какие из них не так хорошо отображаются? Дай мне знать в комментариях!

Похожие чтения

Посетите любой из следующих постов в блоге, связанных с PHP, которые я написал, если вы так склонны. Пожалуйста, поделитесь ими с другими, кому это тоже будет полезно.

Нравится то, что вы прочитали? Видите что-нибудь неправильное? Пожалуйста, прокомментируйте ниже и спасибо за чтение!

Призыв к действию!

Спасибо, что нашли время, чтобы прочитать этот пост. Я искренне надеюсь, что вы открыли для себя что-то интересное и поучительное. Пожалуйста, поделитесь своими выводами здесь с кем-то из ваших знакомых, кто также получит от этого такую ​​же пользу.

Посетите страницу Портфолио-Проекты, чтобы увидеть записи в блоге/технические статьи, которые я написал для клиентов.

Я люблю пить горячий черный кофе!

Чтобы получать уведомления по электронной почте (Никогда не спам) из этого блога (Проза цифровой совы) о последних сообщениях в блоге по мере их публикации, подпишитесь (по собственному желанию), нажав кнопку Нажмите, чтобы подписаться! на боковой панели. домашняя страница! (Не стесняйтесь в любое время просмотреть Страницу политики конфиденциальности Digital Owl’s Prose по любым вопросам, которые могут у вас возникнуть: обновления по электронной почте, подписка, отказ, контактные формы и т. д.)

Обязательно посетите страницу Лучшее из для коллекции моих лучших постов в блоге.

Джош Отвелл страстно желает учиться и расти как разработчик SQL и блогер. Другие любимые занятия заставят его уткнуться носом в хорошую книгу, статью или командную строку Linux. Среди них он разделяет любовь к настольным ролевым играм, чтению фантастических романов и проведению времени с женой и двумя дочерьми.

Отказ от ответственности: примеры, представленные в этом посте, являются гипотетическими идеями о том, как достичь подобных результатов. Это не самое лучшее решение(я). Большинство, если не все, приведенные примеры выполняются в рабочей среде персональной разработки/обучения и не должны рассматриваться как качественные или готовые к использованию. Ваши конкретные цели и потребности могут отличаться. Используйте те методы, которые лучше всего подходят для ваших нужд и целей. Мнения мои собственные.

Первоначально опубликовано на https://joshuaotwell.com 24 марта 2021 г.