Laravel 收银员调用未定义的方法 onGracePeriod()

Laravel Cashier Call to Undefined Method onGracePeriod()

所以我最近从 Laravel 5.1 -> 5.4 和 Cashier 从 5.0 -> 7.0 升级。在我的 blade 中,我使用此检查来查看用户是否处于宽限期

<?php if(Auth::check() && Auth::user()->onGracePeriod()): ?>

但是现在这段代码抛出异常

Call to undefined method Illuminate\Database\Query\Builder::onGracePeriod()

根据文档,我的用户模型具有导入

use Laravel\Cashier\Billable;

和 class 本身内部的 use 语句

class User extends Model implements AuthenticatableContract, 

CanResetPasswordContract
{
     use Authenticatable, CanResetPassword, Billable;
    /**
     * The database table used by the model.
     *
     * @var string
...

是否还有其他可能导致此错误的原因?通过代码搜索,该函数似乎在收银台内的 Subscription.php 内,但我似乎找不到修复方法。我还有文档中经常引用的包含日期

protected $dates = ['trial_ends_at', 'subscription_ends_at'];

但我在 5.1 之前就有过它,我的数据库也使用过它,所以我怀疑这是否相关。有任何想法吗?我唯一能想到的是,当从 5.1 -> 5.4 移动时,我不得不删除 "BillableContract" 因为它似乎不再被使用,有什么我必须用它替换的吗?谢谢!

我相信你必须直接引用他们的订阅文章——而不是直接从用户那里引用(我认为它被错误地使用了,这就是我所说的);

根据 the documentation 你像这样检查 onGracePeriod:

if ($user->subscription('main')->onGracePeriod()) {
    //
}