所以我最近从Laravel 5.1升级 - > 5.4和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”,因为看起来它已经不再使用了,有什么东西要用它代替吗?谢谢!
答案 0 :(得分:1)
我相信你必须直接引用他们的订阅作品 - 而不是直接引用用户(我认为它被错误使用是我所说的);
按the documentation检查onGracePeriod,如下所示:
if ($user->subscription('main')->onGracePeriod()) {
//
}