diff --git a/app/Models/Membership.php b/app/Models/Membership.php new file mode 100644 index 0000000..82821f6 --- /dev/null +++ b/app/Models/Membership.php @@ -0,0 +1,28 @@ + 'int', + ]; + } + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } + + public function tier(): BelongsTo + { + return $this->belongsTo(Tier::class); + } +} diff --git a/app/Models/Tier.php b/app/Models/Tier.php index 78ad9e1..a9fb84a 100644 --- a/app/Models/Tier.php +++ b/app/Models/Tier.php @@ -4,6 +4,7 @@ use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; +use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\SoftDeletes; class Tier extends Model @@ -19,4 +20,9 @@ protected function casts(): array 'max_points' => 'int', ]; } + + public function membership(): HasOne + { + return $this->hasOne(Membership::class); + } } diff --git a/app/Models/User.php b/app/Models/User.php index f4c9187..ad040a9 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -5,13 +5,14 @@ // use Illuminate\Contracts\Auth\MustVerifyEmail; use App\Enums\UserStatus; +use Illuminate\Contracts\Auth\MustVerifyEmail; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Foundation\Auth\User as Authenticatable; use Illuminate\Notifications\Notifiable; -class User extends Authenticatable +class User extends Authenticatable implements MustVerifyEmail { use HasFactory, Notifiable, SoftDeletes; @@ -35,4 +36,9 @@ public function customer(): HasOne { return $this->hasOne(Customer::class); } + + public function membership(): HasOne + { + return $this->hasOne(Membership::class); + } } diff --git a/database/migrations/2025_09_30_042232_create_memberships_table.php b/database/migrations/2025_09_30_042232_create_memberships_table.php new file mode 100644 index 0000000..0948031 --- /dev/null +++ b/database/migrations/2025_09_30_042232_create_memberships_table.php @@ -0,0 +1,31 @@ +id(); + $table->foreignId('user_id')->constrained()->cascadeOnDelete(); + $table->foreignId('tier_id')->constrained()->cascadeOnDelete(); + $table->unsignedInteger('total_points')->default(0); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('memberships'); + } +};