diff --git a/backend/app/Model/Platform.php b/backend/app/Model/Platform.php index 8140b1e..b4ee71e 100644 --- a/backend/app/Model/Platform.php +++ b/backend/app/Model/Platform.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Model; +use Hyperf\Database\Model\Relations\BelongsTo; /** * @mixin \App_Model_Platform @@ -12,7 +13,7 @@ class Platform extends Model { /** * The table associated with the model. - * + * * @TODO check if we realy need the platform table, or consider use a virtual model */ protected ?string $table = 'platforms'; @@ -20,10 +21,15 @@ class Platform extends Model /** * The attributes that are mass assignable. */ - protected array $fillable = []; + protected array $fillable = ['developer_id']; /** * The attributes that should be cast to native types. */ - protected array $casts = []; + protected array $casts = ['developer_id' => 'integer']; + + public function developer(): BelongsTo + { + return $this->belongsTo(User::class, 'developer_id'); + } } diff --git a/backend/app/Model/User.php b/backend/app/Model/User.php index db167b7..123e32f 100644 --- a/backend/app/Model/User.php +++ b/backend/app/Model/User.php @@ -4,6 +4,7 @@ declare(strict_types=1); namespace App\Model; +use Hyperf\Database\Model\Relations\HasMany; use Hyperf\DbConnection\Model\Model; use Qbhy\HyperfAuth\Authenticatable; @@ -91,6 +92,20 @@ class User extends Model implements Authenticatable return password_verify($password, $this->password); } + public function developedPlatforms(): HasMany + { + return $this->hasMany(Platform::class, 'developer_id'); + } + + protected static function boot(): void + { + parent::boot(); + + static::deleting(function (User $user) { + $user->developedPlatforms()->update(['developer_id' => 1]); + }); + } + /** * Check if refresh token is valid. */ diff --git a/backend/migrations/2026_03_05_000000_add_developer_id_to_platforms_table.php b/backend/migrations/2026_03_05_000000_add_developer_id_to_platforms_table.php new file mode 100644 index 0000000..bffa69d --- /dev/null +++ b/backend/migrations/2026_03_05_000000_add_developer_id_to_platforms_table.php @@ -0,0 +1,32 @@ +unsignedBigInteger('developer_id')->default(1)->comment('数据维护者,关联 users.id'); + $table->foreign('developer_id')->references('id')->on('users')->onDelete('restrict'); + $table->index('developer_id', 'idx_platforms_developer_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('platforms', function (Blueprint $table) { + $table->dropForeign(['developer_id']); + $table->dropIndex('idx_platforms_developer_id'); + $table->dropColumn('developer_id'); + }); + } +};