我们在一个项目中工作,我想插入一行到数据库使用种子,但当我执行了种子,它截断表格和插入种子记录。我想要的是,它应该只插入一个新的记录,而不截断现有的数据。
有人能帮我拿到这个吗?
在我们使用的Laravel和Yii2等几乎所有的MVC中都可以使用这个种子特性。
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中迁移的示例
发布于 2020-01-18 15:39:44
您可以创建一个新的迁移文件,并将insert查询放入其中
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发布于 2020-01-18 16:04:54
您可以通过两种方式完成此操作
1.更新您的种子
假设您的表名为' categories‘,并且您已经有了12个类别。
您应该在种子数组中从13开始您的新类别id。
你的播种机看起来像这样
public function run()
{
$data = array(
['id' => 13, 'category' => 'Category1', 'status' => 1],
['id' => 24, 'category' => 'category2', 'status' => 1]
);
DB::table('categories')->insert($data);
}编写一个方法并执行插入查询
https://stackoverflow.com/questions/59798220
复制相似问题