From 0d5b34118e06f17d012fced95f809e5f7b644bb4 Mon Sep 17 00:00:00 2001 From: Dries Vints Date: Fri, 19 Feb 2021 09:47:05 +0100 Subject: [PATCH] Allow model swapping --- src/Cashier.php | 36 +++++++++++++++++++++++++++ src/Concerns/ManagesSubscriptions.php | 3 ++- src/Subscription.php | 2 +- src/SubscriptionItem.php | 2 +- 4 files changed, 40 insertions(+), 3 deletions(-) diff --git a/src/Cashier.php b/src/Cashier.php index 13cac0b9..3199b105 100644 --- a/src/Cashier.php +++ b/src/Cashier.php @@ -52,6 +52,20 @@ class Cashier */ public static $deactivatePastDue = true; + /** + * The subscription model class name. + * + * @var string + */ + public static $subscriptionModel = Subscription::class; + + /** + * The subscription item model class name. + * + * @var string + */ + public static $subscriptionItemModel = SubscriptionItem::class; + /** * Get the billable entity instance by Stripe ID. * @@ -153,4 +167,26 @@ public static function keepPastDueSubscriptionsActive() return new static; } + + /** + * Set the subscription model class name. + * + * @param string $subscriptionModel + * @return void + */ + public static function useSubscriptionModel($subscriptionModel) + { + static::$subscriptionModel = $subscriptionModel; + } + + /** + * Set the subscription item model class name. + * + * @param string $subscriptionItemModel + * @return void + */ + public static function useSubscriptionItemModel($subscriptionItemModel) + { + static::$subscriptionItemModel = $subscriptionItemModel; + } } diff --git a/src/Concerns/ManagesSubscriptions.php b/src/Concerns/ManagesSubscriptions.php index 9979065f..0db99e45 100644 --- a/src/Concerns/ManagesSubscriptions.php +++ b/src/Concerns/ManagesSubscriptions.php @@ -2,6 +2,7 @@ namespace Laravel\Cashier\Concerns; +use Laravel\Cashier\Cashier; use Laravel\Cashier\Subscription; use Laravel\Cashier\SubscriptionBuilder; @@ -102,7 +103,7 @@ public function subscription($name = 'default') */ public function subscriptions() { - return $this->hasMany(Subscription::class, $this->getForeignKey())->orderBy('created_at', 'desc'); + return $this->hasMany(Cashier::$subscriptionModel, $this->getForeignKey())->orderBy('created_at', 'desc'); } /** diff --git a/src/Subscription.php b/src/Subscription.php index c3656fb5..ca7d1d7d 100644 --- a/src/Subscription.php +++ b/src/Subscription.php @@ -91,7 +91,7 @@ public function owner() */ public function items() { - return $this->hasMany(SubscriptionItem::class); + return $this->hasMany(Cashier::$subscriptionItemModel); } /** diff --git a/src/SubscriptionItem.php b/src/SubscriptionItem.php index 72e34ae4..c060c932 100644 --- a/src/SubscriptionItem.php +++ b/src/SubscriptionItem.php @@ -40,7 +40,7 @@ class SubscriptionItem extends Model */ public function subscription() { - return $this->belongsTo(Subscription::class); + return $this->belongsTo(Cashier::$subscriptionModel); } /**