【发布时间】:2018-11-12 21:15:36
【问题描述】:
我使用 Laravel Cashier 处理用户的订阅,但是当我尝试进行基本取消 $user->subscription('main')->cancel() 时,抛出异常
BadMethodCallException: 在
中调用未定义的方法 Illuminate\Database\Query\Builder::asStripeCustomer()\try\vendor\laravel\framework\src\Illuminate\Database\Query\Builder.php:2483
堆栈跟踪:
\try\vendor\laravel\framework\src\Illuminate\Database\Eloquent\Model.php(1470): Illuminate\Database\Eloquent\Builder->__call('asStripeCustome...', Array)
\try\vendor\laravel\cashier\src\Subscription.php(345): Illuminate\Database\Eloquent\Model->__call('asStripeCustome...', Array)
\try\vendor\laravel\cashier\src\Subscription.php(256): Laravel\Cashier\Subscription->asStripeSubscription()
我正确设置了模型并使用了Billable trait,所以我真的不知道是什么导致了这个错误
应用\用户.php
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Cashier\Billable;
class User extends Authenticatable{
use Billable;
...
}
App\Http\Controllers\UserController.php
public function cancelSubscription(Request $request)
{
$user = $request->user();
try {
if ($user->subscription('main')->onTrial()) {
$user->subscription('main')->cancelNow();
} else {
$user->subscription('main')->cancel();
}
} catch (\Exception $e) {
\Log::error($e);
return [
'success' => 0,
'message' => "Something went wrong while trying cancel your subscription. Please try again later."
];
}
任何帮助和提示将不胜感激,在此先感谢!
【问题讨论】:
标签: php laravel laravel-5.5 laravel-cashier