<?php

/**
 * 文件功能：红包领取记录 Model
 *
 * 每条记录代表某个用户领取了某个红包的一份，
 * envelope_id + user_id 联合唯一约束保证幂等性。
 *
 * @author  ChatRoom Laravel
 *
 * @version 1.0.0
 */

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;

class RedPacketClaim extends Model
{
    /** 无自动 updated_at，只记录 claimed_at */
    public $timestamps = false;

    protected $fillable = [
        'envelope_id',
        'user_id',
        'username',
        'amount',
        'claimed_at',
    ];

    /**
     * 类型转换。
     */
    public function casts(): array
    {
        return [
            'claimed_at' => 'datetime',
        ];
    }

    /**
     * 关联红包主表。
     *
     * @return BelongsTo<RedPacketEnvelope, RedPacketClaim>
     */
    public function envelope(): BelongsTo
    {
        return $this->belongsTo(RedPacketEnvelope::class, 'envelope_id');
    }
}
