Урок 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегизаметки, yii2, php, фреймворки, уроки по yii2




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



OpenCart: Скрыть некоторые поля характеристик в карточке товара
Вывод переменной в Twig на OpenCart 3
XAMPP, host, виртуальные хосты и решение некоторых сопутствующих проблем