Laravel - Кассир | swap() и cancelNow() при нулевом значении

В основном у меня есть эта проблема, которая продолжает происходить.

Как только пользователь подписывается, все работает нормально. Он может отменить/изменить подписку без проблем.

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

Вызов функции-члена cancelNow() при нулевом значении Вызов функции-члена Swap() при нулевом значении

Оба означают, что $user->subscription($membership_group) = null.

Что может быть причиной этого?


person e4stwood    schedule 02.01.2017    source источник
comment
Обновление: проблема возникает после того, как я переключил пользователя на новый план, а затем попытался что-то сделать с пользователем. Например, я меняю пользователя с плана 1 на план 2, затем пытаюсь отменить — пользователь-›подписался-›отменить при нулевой ошибке. Я также заметил, что когда я меняю план пользователей с помощью swap, он меняет план, но не имя в подписках.   -  person e4stwood    schedule 02.01.2017
comment
Вы решили проблему? тогда любезно поделитесь своими выводами, спасибо.   -  person Dawood Butt    schedule 11.08.2018


Ответы (1)


Это решение, которое я нашел, довольно уродливо! Я сообщу об этой ошибке.

    $user->subscription('current_plan')->swap('plan_to_subscribe');
    $user->save();

    // Messed up work around cause of swap method bug
    DB::update('update subscriptions set name = ? where user_id = ?', [
        $plan,
        $user->id
    ]);

Во всяком случае работает на данный момент...

Также я думаю, что это уже исправлено: https://github.com/laravel/cashier/commit/1e87a60f1bf5c8981730d2481350f74fccaf0947#diff-dde586b4ea0798ea4a467b9eba070a7e

Осталось дождаться релиза.

person Bruno Mota    schedule 11.08.2018