Выборка | Yii 2 работа с базой данных MySQL

В данной статье мы узнаем как выбирать данные

из базе данных.

Для более глубокого понимания рекомендую пройти платный курс по Yii2 от команды WebForMySelf. Для ознакомления есть и бесплатная часть.

Что нам необходимо для работы с базой данных?

  1. Сама база данных (ссылка на скачивание исходника).
  2. Подключение к ней.
  3. Метод который позволит выбирать данные.

Как подключаться к базе данных в Yii2?

Использовать будем эту базу.

Подключение настраивается в файле /config/db.php, вот что содержит у меня данный файл:

Создаём класс для работы с базой данных

Чтение данных из базе данных, операция read

Метод чтения данных в Yii 2 является метод find, и ряд других методов класса activeRecord. Наша модель должна расширять данный класс.

Теперь нашу модель Мы должны использовать в контроллере:

Обратите внимание что если Вы используете модель в контроллере, то должны её подключать. В нашем случае это будет:

Наша строка $cats = Category::find()->all(); делает то же самое что и данный SQL запрос

Результат:

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

Что делать если у нас таблица называется по разному от модели?

Сделать это можно с помощью статического метода tableName:

Пройтись в цикле по результатам выборки

можно следующим образом:

Результат будет следующий:

результат цикла foreeach

Как выбрать только часть данных

Часто бывает что нам нужны не все данные а только часть из них, поэтому давайте рассмотрим как можно выбрать данные по условию.

Выборка будет разбиваться на 3 шага:

  1. Создадим новый объект запроса. (этим занимается метод find)
  2. Настроим объект запроса, который создали в шаге №1. (за это отвечают методы строения запросов)
  3. Получение данных в виде объекта.

Межу первым и последним шагом могут находиться много методов которые будут настраивать запрос.

Как сортировать данные в запросе:

Как вытащить данные в виде массива (array) а не объекта:

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

Результат:

Как вытащить данные в виде массива

Метод которые позволяет задавать условия (where):

Есть ещё вариант передачи параметров в метод where это массив:

Теперь давайте рассмотрим пример использования оператора LIKE:

И ещё один пример запроса:

Как вытащить только один ряд из базе данных:

Это можно делать двумя способами:

1. Использование оператора limit:

В результате создаётся многомерный массив.

2. Использование метода one:

В результате создаётся одномерный массив.

Рекомендую:

Даже если вы используете метод one всегда добавляйте limit  чтоб ограничить выборку только одной записью.

Как считать данные (использование оператора count):

Так-же мы можем использовать и другие методы, например SUM чтобы суммировать, и.т.д.

Как писать свой SQL запросы в Yii2 без использования методов:

Использовать такой вариант не совсем правильно потому что у нас pp это часто данные которые приходят к нам от пользовательской части сайта, например из формы поиска, и что пользователь там введёт мы не знаем, это могут быть SQL инъекций или что-то ещё. В этом случае рекомендуется использовать параметризированный запрос который при выполнение будет экранирован. Вот пример:

Удачной использование MySQL в Yii 😉

Просмотры: 14 320
(7 оценок, среднее: 4,43 из 5)
Загрузка...

3 comments

  1. Макс says:

    Огромное спасибо за статью! А-то столкнулся со случаем, когда название таблиц в БД конфликтовало с политикой имён yii2. В мануале не сказано про случай, когда названия таблицы и класса отличаются.

Добавить комментарий для Макс Отменить ответ

You have to agree to the comment policy.