修复:将 position_authority_logs.user_position_id 改为可空,修复超管发放奖励时报约束违反错误
This commit is contained in:
+59
@@ -0,0 +1,59 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 文件功能:将 position_authority_logs.user_position_id 改为可空
|
||||||
|
*
|
||||||
|
* 原字段为 NOT NULL,但超级管理员(id=1)无职务记录,
|
||||||
|
* 发放奖励时 user_position_id 为 null,导致约束违反错误。
|
||||||
|
* 修改为 nullable 后,超管操作写 null,普通职务人员写实际职务 ID。
|
||||||
|
*
|
||||||
|
* @author ChatRoom Laravel
|
||||||
|
*
|
||||||
|
* @version 1.0.0
|
||||||
|
*/
|
||||||
|
|
||||||
|
use Illuminate\Database\Migrations\Migration;
|
||||||
|
use Illuminate\Database\Schema\Blueprint;
|
||||||
|
use Illuminate\Support\Facades\Schema;
|
||||||
|
|
||||||
|
return new class extends Migration
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* 将 user_position_id 改为可空,兼容超级管理员无职务的情况
|
||||||
|
*/
|
||||||
|
public function up(): void
|
||||||
|
{
|
||||||
|
Schema::table('position_authority_logs', function (Blueprint $table) {
|
||||||
|
// 先删除原外键约束,再重新定义为 nullable
|
||||||
|
$table->dropForeign(['user_position_id']);
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('user_position_id')
|
||||||
|
->nullable()
|
||||||
|
->change();
|
||||||
|
|
||||||
|
$table->foreign('user_position_id')
|
||||||
|
->references('id')
|
||||||
|
->on('user_positions')
|
||||||
|
->nullOnDelete();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 回滚:恢复为 NOT NULL(需确保数据中无 null 值)
|
||||||
|
*/
|
||||||
|
public function down(): void
|
||||||
|
{
|
||||||
|
Schema::table('position_authority_logs', function (Blueprint $table) {
|
||||||
|
$table->dropForeign(['user_position_id']);
|
||||||
|
|
||||||
|
$table->unsignedBigInteger('user_position_id')
|
||||||
|
->nullable(false)
|
||||||
|
->change();
|
||||||
|
|
||||||
|
$table->foreign('user_position_id')
|
||||||
|
->references('id')
|
||||||
|
->on('user_positions')
|
||||||
|
->cascadeOnDelete();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user