首页 > 解决方案 > Laravel 收银员多个计划

问题描述

任何人都使用过 Laravel Cashier 并回答了我的以下问题。我想取消订阅,在文档中是这样写的

$user->subscription('default')->cancelNow();

在我的情况下,用户拥有一个地方,我在订阅迁移中添加了一个额外的表,它是“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()

没用,只是我试过了,有人有什么想法吗?我只是在寻找一种使用更具体的代码取消订阅的方法,而不仅仅是订阅的名称。谢谢并恭祝安康!

标签: phplaravellaravel-cashier

解决方案


我有类似的情况,付费用户可以拥有多个订阅者和多个订阅者。我通过创建一个subscriber_id向订阅表添加一个字段的迁移来管理这个

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


推荐阅读