Laravel 收银员多重计划
Laravel Cashier Multiple Plans
任何人都使用过 Laravel 收银台并回答了我的以下问题。
我想取消订阅,在文档中是这样写的
$user->subscription('default')->cancelNow();
在我的例子中,用户拥有一个地方,我向订阅迁移添加了一个额外的 table,即“place_id”,并且他拥有的每个地方都有多个订阅,我可以让上面的代码更具体,写这样的东西,这样他就可以取消他拥有的地方的特定订阅
$user->subscription($planName)->where('place_id','=',$placeID)->cancelNow()
还尝试了订阅查询
$subscription = Subscription::query()->active()->
where(['place_id', '=', $placeID], ['user_id', '=', $user->id])->get();
$subscription->cancelNow()
不起作用,这只是我尝试过的方法,有人有什么想法吗?我只是在寻找一种方法来使用更具体的代码取消订阅,而不仅仅是订阅的名称。
谢谢和问候!
我有一个类似的情况,付费用户可以有一个以上的订阅者。我通过创建一个迁移来管理这个,该迁移将 subscriber_id
字段添加到订阅 table
Schema::table('subscriptions', function (Blueprint $table) {
$table->integer('subscriber_id')->nullable()->after('user_id');
});
然后在创建订阅后更新该 ID。
$subscription = $subscription->create($paymentMethod->id); // returns stripe subscription
$subscription = Subscription::find($subscription->id); // so you have ot get the local subscription from the db
$subscription->update(['subscriber_id' => $subscriber->id]);
然后我可以通过订阅者 ID 和计划获取订阅者或特定订阅的所有订阅
$subscription = Subscription::where('subscriber_id', $subscriber->id)->where('stripe_plan','your_plan')...```
基本上你可以做同样的事情,但 place_id
所以我解决了我的问题,而不是使用
->get();
我用过:
->first();
像这样:
$subscription = Subscription::query()->active()->where([['place_id', '=', $placeID], ['user_id', '=', $user->id]])->first();
$subscription->cancelNow();
那是因为 first() 方法将 return 只有一个记录,而 get() 方法将 return 一组记录,即使在我的例子中它只 returned一个记录,因为它应该 return,但 first() 让它工作,它解决了我的问题。
任何人都使用过 Laravel 收银台并回答了我的以下问题。 我想取消订阅,在文档中是这样写的
$user->subscription('default')->cancelNow();
在我的例子中,用户拥有一个地方,我向订阅迁移添加了一个额外的 table,即“place_id”,并且他拥有的每个地方都有多个订阅,我可以让上面的代码更具体,写这样的东西,这样他就可以取消他拥有的地方的特定订阅
$user->subscription($planName)->where('place_id','=',$placeID)->cancelNow()
还尝试了订阅查询
$subscription = Subscription::query()->active()->
where(['place_id', '=', $placeID], ['user_id', '=', $user->id])->get();
$subscription->cancelNow()
不起作用,这只是我尝试过的方法,有人有什么想法吗?我只是在寻找一种方法来使用更具体的代码取消订阅,而不仅仅是订阅的名称。 谢谢和问候!
我有一个类似的情况,付费用户可以有一个以上的订阅者。我通过创建一个迁移来管理这个,该迁移将 subscriber_id
字段添加到订阅 table
Schema::table('subscriptions', function (Blueprint $table) {
$table->integer('subscriber_id')->nullable()->after('user_id');
});
然后在创建订阅后更新该 ID。
$subscription = $subscription->create($paymentMethod->id); // returns stripe subscription
$subscription = Subscription::find($subscription->id); // so you have ot get the local subscription from the db
$subscription->update(['subscriber_id' => $subscriber->id]);
然后我可以通过订阅者 ID 和计划获取订阅者或特定订阅的所有订阅
$subscription = Subscription::where('subscriber_id', $subscriber->id)->where('stripe_plan','your_plan')...```
基本上你可以做同样的事情,但 place_id
所以我解决了我的问题,而不是使用
->get();
我用过:
->first();
像这样:
$subscription = Subscription::query()->active()->where([['place_id', '=', $placeID], ['user_id', '=', $user->id]])->first();
$subscription->cancelNow();
那是因为 first() 方法将 return 只有一个记录,而 get() 方法将 return 一组记录,即使在我的例子中它只 returned一个记录,因为它应该 return,但 first() 让它工作,它解决了我的问题。