Spec-Zone.ru › CodeIgniter 4

Заполнение базы данных

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

Семена базы данных — это простые классы, которые должны иметь метод run() и расширять CodeIgniter\Database\Seeder. Внутри метода run() класс может создавать любые необходимые данные. Он имеет доступ к подключению к базе данных и генератору через $this->db и $this->forge, соответственно. Файлы семян должны храниться в каталоге app/Database/Seeds. Имя файла должно совпадать с именем класса.

<?php

namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class SimpleSeeder extends Seeder
{
    public function run()
    {
        $data = [
            'username' => 'darth',
            'email'    => 'darth@theempire.com'
        ];

        // Simple Queries
        $this->db->query("INSERT INTO users (username, email) VALUES(:username:, :email:)", $data);

        // Using Query Builder
        $this->db->table('users')->insert($data);
    }
}

Вложенные семена

Семена могут вызывать другие семена с помощью метода call(). Это позволяет легко организовать центральное семя, но организовать задачи в отдельных файлах семян:

<?php

namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class TestSeeder extends Seeder
{
    public function run()
    {
        $this->call('UserSeeder');
        $this->call('CountrySeeder');
        $this->call('JobSeeder');
    }
}

Вы также можете использовать полное имя класса в методе call(), что позволяет хранить семена в любом месте, где автозагрузчик их найдет. Это отлично подходит для более модульных кодовых баз:

public function run()
{
    $this->call('UserSeeder');
    $this->call('My\Database\Seeds\CountrySeeder');
}

Использование Faker

Если вы хотите автоматизировать генерацию данных семян, вы можете использовать библиотеку Faker.

Чтобы установить Faker в свой проект:

> composer require --dev fakerphp/faker

После установки экземпляр Faker\Generator доступен в основном классе Seeder и доступен для всех дочерних семян. Вы должны использовать статический метод faker() для доступа к экземпляру.

<?php

namespace App\Database\Seeds;

use CodeIgniter\Database\Seeder;

class UserSeeder extends Seeder
{
    public function run()
    {
        $model = model('UserModel');

        $model->insert([
            'email'      => static::faker()->email,
            'ip_address' => static::faker()->ipv4,
        ]);
    }
}

Использование семян

Вы можете получить копию основного семени через класс конфигурации базы данных:

$seeder = \Config\Database::seeder();
$seeder->call('TestSeeder');

Заполнение базы данных из командной строки

Вы также можете заполнить данные из командной строки в качестве части инструментов командной строки Migrations, если не хотите создавать отдельный контроллер:

> php spark db:seed TestSeeder

Создание файлов семян

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

> php spark make:seeder user --suffix
// Output: UserSeeder.php file located at app/Database/Seeds directory.

Вы можете указать корневой пространство имен, где будет храниться файл семени, указав параметр --namespace.

> php spark make:seeder MySeeder --namespace Acme\Blog

Если Acme\Blog сопоставлен с каталогом app/Blog, то эта команда сгенерирует MySeeder.php в каталоге app/Blog/Database/Seeds.

Указание параметра --force перезапишет существующие файлы в месте назначения.

© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/user_guide/dbmgmt/seeds.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API