Можем ли мы выполнить сеялку без усечения таблицы или есть ли способ добиться этого - PullRequest
1 голос
/ 18 января 2020

мы работаем над проектом, в котором я хотел бы вставить одну строку в базу данных, используя сеялку, но когда я выполнил эту сеялку, она усекает таблицу и вставляет начальную запись. Я хочу, чтобы он вставлял новую запись только без усечения существующих данных.

Может ли кто-нибудь помочь получить это?

Эта функция сеялки доступна почти во всех MVC, как Laravel и Yii2, который мы используем.

use yii\db\Migration;

class m200118_113041_create_table_admin_master extends Migration
{

    public function Safeup()
    {
        $seeder = new \tebazil\yii2seeder\Seeder();
        $generator = $seeder->getGeneratorConfigurator();
        $faker = $generator->getFakerConfigurator();

        $seeder->table('admin_master')->columns([
            'email'=>$faker->email,
            'password'=>rand(1, 999999),
            'created_date'=> date('Y-m-d H:i:s'),
        ])->rowQuantity(30);
        $seeder->refill();

    }

    public function Safedown()
    {
        // $this->dropTable('{{%admin_master}}');
    }
}

Здесь выше приведен пример моей миграции в Yii2

Ответы [ 2 ]

1 голос
/ 18 января 2020

вы можете создать новый файл миграции и поместить запрос вставки в него с такой легкостью

php artisan make:migration insert_somename_table

, чем внутри файла миграции

<?php

use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
use DB;

class InsertSomenameTable extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        DB::('somename')->insert(array('key1' => 'value1', 'key2' => 'value2'));
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        DB::('somename')->where('key1', '=', 'value1')->delete();
    }
}

и выполнить

php artisan migrate

0 голосов
/ 18 января 2020

Вы можете сделать это двумя способами

1. Обновить сеялку

Считайте, что ваше имя таблицы - "категории", и у вас уже есть 12 категорий.

Вы должны начать свой новый идентификатор категории с 13 в массиве сеялок.

Ваш сеялка выглядит так

public function run()
{
        $data = array(
            ['id' => 13, 'category' => 'Category1', 'status' => 1],
            ['id' => 24, 'category' => 'category2', 'status' => 1]
        );

        DB::table('categories')->insert($data);
}

2. Выполнить запросы

Написать один метод и выполнить запросы вставки

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...