2

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

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

但是现在此代码引发异常

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

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

use Laravel\Cashier\Billable;

以及类本身内部的 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”,因为它似乎不再被使用,有什么我必须替换的吗?谢谢!

4

1 回答 1

1

我相信你必须直接参考他们的订阅部分——而不是直接从用户那里(我认为它被错误地使用就是我的意思);

根据您检查 onGracePeriod的文档,如下所示:

if ($user->subscription('main')->onGracePeriod()) {
    //
}
于 2017-03-08T17:04:09.387 回答