我有一个名为locations
的数据库表,我需要添加一个新的status
列。我设置了以下迁移文件,在运行php artisan migrate
时添加了字段,但是如何为表中的每一行插入Active
的值?
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddStatusToLocationsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('locations', function(Blueprint $table)
{
$table->string('status')->after('email');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('locations', function(Blueprint $table)
{
$table->dropColumn('status');
});
}
}
答案 0 :(得分:1)
你有两个解决方案
您可以完全为此表的现有播种机添加值
您还可以创建一个新的播种机,您可以在其中获取每个位置,添加新的字段值并将其另存为
foreach(Location::all() as $location){
$location->status = 'Active';
$location->save();
}
答案 1 :(得分:1)
您可以将字段设置为默认值
$table->string('status')->after('email')->default('active')
如果您只需更新当前记录,则可以进行播种:
运行这个工匠命令:
php artisan make:seeder AddStatusSeeder
然后在你的AddStatusSeeder中:
<?php
use Illuminate\Database\Seeder;
class AddStatusSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
DB::table('locations')->update([
'status' => 'Active'
]);
}
}
答案 2 :(得分:0)
您需要使用database seeding。您可以为locations表创建模型,也可以使用DB::table
插入方式。
然后,您可以运行php artisan migrate --seed
来创建架构并填充数据库。