Урок 3. Работа с базой данных в Yii2
Давайте подключим базу данных. Сначала нам нужна база данных. Создайте её, а затем вернитесь к этому уроку. В XAMPP это легко сделать с помощью phpmyadmin (http://localhost/phpmyadmin). Когда у вас будут учетные данные базы данных в руках, отправляйтесь в config/db.php файл и добавьте правильные значения
return [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;port=3307;dbname=wf_user', 'username' => 'wf_user', 'password' => 'dVPYewqQqCzTD0xO', 'charset' => 'utf8', // Schema cache options (for production environment) //'enableSchemaCache' => true, //'schemaCacheDuration' => 60, //'schemaCache' => 'cache', ];Мое имя базы данных - это wf_user. Имя пользователя - wf_user, и пароль “12345”. Так что наша база данных настроена правильно.
Проверка соединения
Вы можете проверить, правильно ли подключена ваша база данных. Давайте запустим запрос. У нас есть таблица стран в нашей базе данных, поэтому мы будем извлекать данные из нее.
В DashboardController добавьте следующий код
use Yii; public function actionTest(){ $results = Yii::$app->db->createCommand('SELECT * FROM countries LIMIT 5')->queryAll(); var_dump($results); }Мы используем функцию Yii::$app->db->createCommand() для получения результатов из базы данных.
Мы используем var_dump для отображения возвращаемого массива.
Кроме того, вам может потребоваться отредактировать SQL-запрос в соответствии с таблицами базы данных.
Не забудьте поместить символ use Yii в верхней части экрана DashboardControlller.php файла.
Создаем модель
В Yii можно создавать модели, используя инструмент генерации кода, называемый GII. Давайте создадим модель.
Перейдите на http://localhost/web/gii/model для начала.
После того как вы выбрали правильные параметры, вы можете сгенерировать модель.
Перейдите в каталог models, чтобы просмотреть только что созданный класс.
Поиск всех записей из базы данных
Давайте получим все наши страны из базы данных.
В нашем DashboardController.php мы можем создать маршрут стран. Затем мы используем функцию find() в нашей модели, чтобы получить все страны из базы данных, как показано ниже.
use app\models\Countries; public function actionCountries(){ $countries = Countries::find()->all(); // get all the countries foreach ($countries as $country){ echo $country->name . '<br>'; } }Обратите внимание на наш формат
Model::find()->all() //Получение одной записи из базы данных
Давайте вместо этого получим одну запись из базы данных по первичному ключу.
public function actionCountries(){ $countries = Countries::findAll(2); foreach ($countries as $country){ echo $country->name . '<br>'; } }Выше мы используем функцию Model::findAll.
Использование запроса where
Давайте найдем страну на основе названия страны. в наш DashboardController мы можем добавить следующий код
public function actionCountries(){ $countries = Countries::find()->where(['name'=>'Argentina'])->all(); foreach ($countries as $country){ echo $country->id . '<br>'; } }Мы используем функцию where для поиска id страны, равного Argentina.
Поиск записей с помощью запроса like
Мы можем использовать подобный запрос, как показано ниже.
public function actionCountries(){ $countries = Countries::find()->where(['like','name',"E"])->all(); foreach ($countries as $country){ echo $country->name . '<br>'; } }Миграции
Миграции используются для управления нашей базой данных из нашего приложения.
Выполните следующую команду, чтобы создать миграцию для таблицы notes.
php yii migrate/create notes_tableЭто создаст файл в каталоге миграций. Суффикс файла notes_table.
Сначала нам нужно использовать класс Schema, поэтому мы делаем это
use yii\db\Schema;Теперь в нашей функции safeUp мы добавляем код для нашей таблицы
public function safeUp() { $this->createTable('yii_notes',[ 'id' => Schema::TYPE_PK, 'title' => Schema::TYPE_STRING, 'content' => Schema::TYPE_TEXT ]); }При этом будет создана таблица с идентификатором первичного ключа, а также полями заголовка и содержимого.
Чтобы запустить миграцию, мы запускаем следующую команду
php yii migrateЭта команда выполнит все оставшиеся миграции. Итак, теперь у нас есть таблица заметок.
Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.