我正在使用Laravel 5.4和cashier 7.0创建新订阅,但在创建订阅后,我尝试从Billable
特征返回一些值,但它们返回false。例如:
public function persist(Company $company)
{
$company->newSubscription('default', $this->input('plan'))->create($this->input('token'));
return response()->json([
'subscribed' => $company->subscribed(),
'onTrial' => $company->onTrial()
]);
}
即使模型已订阅且两个属性都应返回true,'subscribed'
和'onTrial'
都是假的。如何在创建订阅后立即在控制器上访问收银员方法?
答案 0 :(得分:0)
public function persist(Company $company)
{
$subscription = $company->newSubscription('default', $this->input('plan'))->create($this->input('token'));
return $subscription->owner()->subscribed(); //returns true
}
答案 1 :(得分:0)
今天,我在尝试断言用户已订阅计划时遇到了同样的问题。
解决方案是在创建订阅之后但在调用订阅之前刷新用户模型:
$this->user->refresh();
发生问题是因为Laravel Cashier在创建新订阅之前在用户模型中预加载了订阅关系。
因此,您还可以使用以下方式重新加载订阅:
$this->user->load('subscriptions');
在致电subscribed
之前,这同样可以解决问题。