DealerLvl::None, 'settle_state' => DealerPurchaseSubsidySettleState::Pending, 'status' => DealerPurchaseSubsidyStatus::Pending, ]; protected $casts = [ 'lvl' => DealerLvl::class, 'start_at' => 'datetime', 'end_at' => 'datetime', 'settle_state' => DealerPurchaseSubsidySettleState::class, 'status' => DealerPurchaseSubsidyStatus::class, ]; protected $fillable = [ 'user_id', 'payer_id', 'lvl', 'total_purchase_amount', 'subsidy_rate', 'total_subsidy', 'total_amount', 'real_amount', 'fee', 'fee_rate', 'start_at', 'end_at', 'settle_state', 'status', 'remark', ]; public function dealer() { return $this->belongsTo(Dealer::class, 'user_id', 'user_id'); } public function logs() { return $this->hasMany(DealerPurchaseSubsidyLog::class, 'purchase_subsidy_id'); } public function earning() { return $this->morphOne(DealerEarning::class, 'earningable'); } public function isCompleted() { return $this->status === DealerPurchaseSubsidyStatus::Completed; } }