Laravel Cashier节省条纹而不是DB

时间:2014-04-09 04:25:33

标签: php laravel laravel-4 stripe-payments

Laravel Cashier在创建用户后未将条带数据保存到我的数据库。

当我创建一个新用户,然后尝试为该用户(或任何其他用户)分配订阅()时,数据被正确地发送到Stripe,因为我可以看到客户ID,计划选择, etc ...但是我的数据库用户条带列没有在我的数据库中更新。

当我删除代码以创建()用户并只订阅用户时,数据会像应该的那样持久存储到数据库中。在我创建了新用户之后,它才起作用,然后尝试订阅任何用户。

我正在使用Jeffrey Way的模型验证包。

$user = $this->userModel->create($input);

if ($user->hasErrors()) {
    throw new \Exception($user->getErrors());
}

$this->createStripeSubscription($user->id, $input['creditCardToken']);

private function createStripeSubscription($user_id, $token) {
    //$this->userModel->find(1)->subscription('monthly')->create($token); // Doesn't work either
    $this->userModel->find($user_id)->subscription('monthly')->create($token);
}

2 个答案:

答案 0 :(得分:1)

我在Confide中遇到了与Ardent验证相似的问题。

在用户模型中覆盖BillableTrait的保存方法解决了这个问题。

class User extends ConfideUser implements BillableInterface {

    use BillableTrait;

    public function saveBillableInstance()
    {                            
        $this->forceSave();        
    }
}

答案 1 :(得分:0)

问题是与Jeffrey Way的验证模型包发生冲突。或者至少我在使用Cashier时尝试实现它的方式。我决定在其自己的类中抽象出我的验证并删除验证模型包。一切都很好。