当我创建新订阅时,Laravel Cashier未设置subscription_ends_at字段。我现在已经花了几天时间摆弄它,我认为它在一开始就有效,但我不得不拉动存储库我们再次工作并丢失了更改,我确实安装并再次配置了所有内容,现在它不会设置该字段。但是,如果我指定试用期,它会设置trial_ends_at。
这是一个年度计划,我们想告知用户续订日期。
用户模型:
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableInterface;
use Laravel\Cashier\BillableTrait;
use Laravel\Cashier\BillableInterface;
class User extends Eloquent implements UserInterface, RemindableInterface, BillableInterface {
use BillableTrait;
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'users';
protected $dates = ['trial_ends_at', 'subscription_ends_at'];
用于创建订阅的控制器方法:
public function postConfirmSubscription()
{
$user = Auth::user();
$user->subscription('premium')->create(Input::get('token.id'));
}
提前感谢您的帮助。
答案 0 :(得分:6)
Laravel Cashier不会设置subscription_ends_at字段,除非该订阅被取消。它旨在管理宽限期(一旦订阅被取消,用户将有权访问该日期),而不是通知用户他们的下一个付款日期或剩余的有效订阅时间。正如我原先想的那样。
当您测试取消程序时,您可能实际上已经看到该字段已填充。
我很害怕你必须为此设置一个额外的字段,让我们说" next_payment_at"和"手动"在控制器或模型级别更新它。