首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我们可以在不截断表的情况下执行seeder吗?有什么方法可以做到这一点吗?

我们可以在不截断表的情况下执行seeder吗?有什么方法可以做到这一点吗?
EN

Stack Overflow用户
提问于 2020-01-18 14:47:54
回答 2查看 238关注 0票数 1

我们在一个项目中工作,我想插入一行到数据库使用种子,但当我执行了种子,它截断表格和插入种子记录。我想要的是,它应该只插入一个新的记录,而不截断现有的数据。

有人能帮我拿到这个吗?

在我们使用的Laravel和Yii2等几乎所有的MVC中都可以使用这个种子特性。

代码语言:javascript
复制
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中迁移的示例

EN

回答 2

Stack Overflow用户

发布于 2020-01-18 15:39:44

您可以创建一个新的迁移文件,并将insert查询放入其中

代码语言:javascript
复制
php artisan make:migration insert_somename_table

而不是迁移文件内部

代码语言:javascript
复制
<?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();
    }
}

并执行

代码语言:javascript
复制
php artisan migrate
票数 1
EN

Stack Overflow用户

发布于 2020-01-18 16:04:54

您可以通过两种方式完成此操作

1.更新您的种子

假设您的表名为' categories‘,并且您已经有了12个类别。

您应该在种子数组中从13开始您的新类别id。

你的播种机看起来像这样

代码语言:javascript
复制
public function run()
{
        $data = array(
            ['id' => 13, 'category' => 'Category1', 'status' => 1],
            ['id' => 24, 'category' => 'category2', 'status' => 1]
        );

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

  1. Execute queries

编写一个方法并执行插入查询

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59798220

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档