我们正在一个项目中,我想使用种子器向数据库中插入一行,但是当我执行该种子器时,它将截断表并插入种子记录。我想要的是它应该只插入一条新记录,而不会截断现有数据。
任何人都可以帮助得到这个吗?
此播种器功能在我们使用的几乎所有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 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
您可以通过两种方式执行此操作