2

All I want to do is to create a stripe customer account for every registered user on Laravel. The problem I'm facing right now is that $new variable isn't passing to User::create function.

I'm trying to edit RegisterController.php, here is create() function I'm using:

public function create(array $data)
{
    \Stripe\Stripe::setApiKey('sk_test_XXXXXXXXXXXXXXX');

    $new = \Stripe\Customer::create([
        'email' => $data['email'],
        'name' => $data['name'],
        'description' => "Contribee.com platform's user",
    ]);

    return User::create([
        'name' => $data['name'],
        'email' => $data['email'],
        'stripe_code' => $new->id,
        'password' => Hash::make($data['password']),
    ]);
}

I've tested this out in my other controller, and $new outputs generated ID. Everything worked fine.

Chin Leung
  • 14,621
  • 3
  • 34
  • 58
Adrijus Jakučionis
  • 265
  • 1
  • 3
  • 12

1 Answers1

4

https://laravel.com/docs/6.x/eloquent#mass-assignment

You may also use the create method to save a new model in a single line. The inserted model instance will be returned to you from the method. However, before doing so, you will need to specify either a fillable or guarded attribute on the model, as all Eloquent models protect against mass-assignment by default.

Anything not permitted as fillable gets discarded.

ceejayoz
  • 176,543
  • 40
  • 303
  • 368