我们可以在不截断表的情况下执行种子器,还是有任何方法可以实现此目的

问题描述 投票:2回答:2

我们正在一个项目中,我想使用种子器向数据库中插入一行,但是当我执行该种子器时,它将截断表并插入种子记录。我想要的是它应该只插入一条新记录,而不会截断现有数据。

任何人都可以帮助得到这个吗?

此播种器功能在我们使用的几乎所有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中迁移的示例

php laravel yii2 migration php-7
2个回答
0
投票

您可以创建一个新的迁移文件,然后轻松地在其中插入查询

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
投票

您可以通过两种方式执行此操作

© www.soinside.com 2019 - 2024. All rights reserved.