Ошибка при вставке записи с помощью Laravel Cashier и отношения «многие ко многим» - PullRequest
0 голосов
/ 17 февраля 2019

У меня есть отношение «многие ко многим» между таблицами «Пользователь» и «Подписка» в Laravel:

В Subscription.php:

public function users()
{
    return $this->belongsToMany('App\User')->withTimestamps();
}

В User.php

public function subscriptions()
{
    return $this->belongsToMany('App\Subscription')->withTimestamps();
}

Я создаю новую подписку в «Кассе» (используя Stripe) следующим образом:

$user->newSubscription($planname, $planname)->create();

(Обратите внимание, что названия продуктов и планов в настоящее время совпадают, а карта пользователя записана,отсюда и отсутствие жетона в полоску.)

Но когда я запускаю это, я получаю ошибку:

SQLSTATE [HY000]: Общая ошибка: 1364 Поле 'user_id' не имеет значения по умолчаниюзначения (SQL: вставить в subscriptions (name, stripe_id, stripe_plan, quantity, updated_at, created_at) значения (проекты, sub_EY1zRywZ1jUjLl, проекты, 1, 2019-02-17 20: 07: 36, 2019-02-17 20:07:36))

Я не уверен, что причиной проблемы являются отношения или это мой новый код подписки.Как я могу исправить эту ошибку?

ОБНОВЛЕНИЕ:

Я внес следующее изменение, и я все еще получаю ту же ошибку:

$user->newSubscription($planname, $planname)->create(null,[
    'user_id' => $user->id, 
]);

ОБНОВЛЕНИЕ 2:

Я внес следующее изменение, и по-прежнему возникает та же самая ошибка:

 $id = Auth::id();
 $user = User::find($id);

  // $user = Auth::user();

Ответы [ 2 ]

0 голосов
/ 18 февраля 2019
General error: 1364 Field 'user_id' doesn't have a default value. 

В соответствии с этим, я думаю, вам нужно заполнить столбец user_id значением id через $ id = Auth :: id ();


Взято из документации laravel:

Дополнительные данные пользователя

Если вы хотите указать дополнительные данные клиента, вы можете сделать это, передав их какВторой аргумент метода создания:

$user->newSubscription('main', 'monthly')->create($stripeToken, [
    'email' => $email, 
]);

ОБНОВЛЕНИЕ

Не могли бы вы попробовать это:

 $id = Auth::id();
 $user = User::find($id);

 $user->newSubscription($planname, $planname)->create();
0 голосов
/ 17 февраля 2019

Добавлена ​​ли черта Billable к вашей модели User?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...