laravel / cashier-stripe

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.
https://laravel.com/docs/billing
MIT License
2.37k stars 667 forks source link

Allow configuring names for the `stripe_id` column on Cashier models. #1657

Closed kylearch closed 6 months ago

kylearch commented 6 months ago

This PR allows for using a column other than stripe_id on the various Cashier models.

It replaces all uses of ->stripe_id with ->stripeId() which can be found in the new HasStripeId trait. This trait is included alongside the other traits in the Billable trait, and in the Subscription and SubscriptionItem models.

To make use of it, you would simply define the model's public static function stripeIdColumn() method to return whatever column name your model uses (including custom Subscription and SubscriptionItem models that extend their Cashier counterparts).

The purpose of this PR was so that in a project of mine I could use my custom models that mirror their actual Stripe counterparts 1:1 in my database. This allows me to both match the Stripe object schema and also more closely follow the Laravel/Eloquent schema pattern (in this case using id instead of stripe_id for the User [Customer], Subscription, and SubscriptionItem models).

driesvints commented 6 months ago

I'm sorry but I don't think we want to take up the maintenance burden of this. If you really need this it's best that you fork the library.