在 laravel 迁移问题中设置默认值
Setting default value in laravel migration issue
在我的 laravel 应用程序中,我有两个 table 称为用户,stat_user。
在我的 stat_user table 中,我需要添加一个名为 added_by 的新列。
added_by 是外键。
added_by 的默认值,必须是用户 table 的 ID。
如何编写我的迁移文件来完全满足我添加额外列的需求。
这是我到目前为止所做的...我正在努力添加该默认值...
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAddedByToCertificateUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('stat_user', function (Blueprint $table) {
$table->unsignedBigInteger('added_by')->after('user_id');
$table->foreign('added_by')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('cstat_user', function (Blueprint $table) {
$table->dropColumn('added_by');
});
}
}
好的,添加具有关系的新列会导致旧记录出现问题,因此我们需要先创建它nullable
Schema::table('stat_user', function (Blueprint $table) {
$table->unsignedBigInteger('added_by')->nullable()->after('user_id');
$table->foreign('added_by')->references('id')->on('users');
});
那么我们可以运行下面的查询来设置旧记录的默认值
\DB::statement('UPDATE stat_user SET added_by = user_id');
您也可以将它们合并到同一个迁移文件中
public function up()
{
//
Schema::table('stat_user', function (Blueprint $table) {
$table->unsignedBigInteger('added_by')->nullable()->after('user_id');
$table->foreign('added_by')->references('id')->on('users');
});
\DB::statement('UPDATE stat_user SET added_by = user_id');
}
在我的 laravel 应用程序中,我有两个 table 称为用户,stat_user。
在我的 stat_user table 中,我需要添加一个名为 added_by 的新列。
added_by 是外键。
added_by 的默认值,必须是用户 table 的 ID。
如何编写我的迁移文件来完全满足我添加额外列的需求。
这是我到目前为止所做的...我正在努力添加该默认值...
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddAddedByToCertificateUserTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('stat_user', function (Blueprint $table) {
$table->unsignedBigInteger('added_by')->after('user_id');
$table->foreign('added_by')->references('id')->on('users');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('cstat_user', function (Blueprint $table) {
$table->dropColumn('added_by');
});
}
}
好的,添加具有关系的新列会导致旧记录出现问题,因此我们需要先创建它nullable
Schema::table('stat_user', function (Blueprint $table) {
$table->unsignedBigInteger('added_by')->nullable()->after('user_id');
$table->foreign('added_by')->references('id')->on('users');
});
那么我们可以运行下面的查询来设置旧记录的默认值
\DB::statement('UPDATE stat_user SET added_by = user_id');
您也可以将它们合并到同一个迁移文件中
public function up()
{
//
Schema::table('stat_user', function (Blueprint $table) {
$table->unsignedBigInteger('added_by')->nullable()->after('user_id');
$table->foreign('added_by')->references('id')->on('users');
});
\DB::statement('UPDATE stat_user SET added_by = user_id');
}