Как использовать создание и обновление в одном методе? - PullRequest
0 голосов
/ 11 января 2020

У меня есть таблица подписки с полем subscription_status. Когда пользователь платит за подписку, он вводит код транзакции, который используется для проверки. Затем система проверяет, была ли у пользователя подписка. Если у него не было подписки, он добавляется в базу данных. Если у него была подписка, система предназначена для редактирования его записи.

Это код, который я использую:

public function store(Request $request, $user_id)
{
    $transaction_code = $request->transaction_code;
    $email = Auth::user()->email;
    $user = Auth::user();
    $user_id = $user->id;
    $phone_number = DB::table('profiles')->where('user_id', $user_id)->value('phone_number');
    //$quotation_title = DB::table('quotations')->where('id',$id)->value('quotation_title');

    $url = "https://education254.com/wp-admin/helbportal/api/results.php";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    $paymentdata = curl_exec($ch);
    curl_close($ch);
    $pc = json_decode($paymentdata, true);
    $collection = collect($pc);
    $result = $collection->firstWhere('transaction_code', $transaction_code);

    if ($result['transaction_amount'] == 50.00 && $result['transactor_number'] == 254729054514) {
        $subscriptionstatus = 1;
    } else {
        $subscriptionstatus = 0;
    }

    $user_id = Auth::user()->id;

    $user_data = DB::table('subscriptions')->where('user_id', $user_id)->get();

    if ($user_data = null) {
        $subscription = new Subscription;

        $subscription->user_id = $user_id;
        $subscription->transaction_code = $request->transaction_code;
        $subscription->subscription_status = $subscriptionstatus;
        $subscription->subscription_endtime = Carbon::now()->addMonths(1);
        $subscription->save();

        return view('subscriptions.success');
    } else {
        $subscription = Subscription::findOrFail($user_id);

        $subscription->user_id = $user_id;
        $subscription->transaction_code = $request->transaction_code;
        $subscription->subscription_status = $subscriptionstatus;
        $subscription->subscription_endtime = Carbon::now()->addMonths(1);
        $subscription->save();

        return view('subscriptions.success');
    }
}

У меня возникают проблемы с обновлением записей при получении этой ошибки:

"Ошибка типа : Слишком мало аргументов для функции App \ Http \ Controllers \ SubscriptionController :: store (), 1 передано и ожидается ровно 2

Ответы [ 2 ]

2 голосов
/ 12 января 2020

Не передавайте $user_id в качестве параметра функции. Вы можете получить аутентификацию пользователя по Auth::user()->id. Кроме того, есть несколько изменений в коде, который вам требуется.

public function store(Request $request)
{
    $transaction_code = $request->transaction_code;
    $email = Auth::user()->email;
    $user_id = Auth::user()->id;
    $phone_number = DB::table('profiles')->where('user_id', $user_id)->value('phone_number');
    //$quotation_title = DB::table('quotations')->where('id',$id)->value('quotation_title');

    $url = "https://education254.com/wp-admin/helbportal/api/results.php";
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_URL, $url);
    $paymentdata = curl_exec($ch);
    curl_close($ch);
    $pc = json_decode($paymentdata, true);
    $collection = collect($pc);
    $result = $collection->firstWhere('transaction_code', $transaction_code);

    if ($result['transaction_amount'] == 50.00 && $result['transactor_number'] == 254729054514) {
        $subscriptionstatus = 1;
    } else {
        $subscriptionstatus = 0;
    }

    $user_data = DB::table('subscriptions')->where('user_id', $user_id)->get();
    $subscription = new Subscription;
    if ($user_data == null) {

        $subscription->user_id = $user_id;
        $subscription->transaction_code = $request->transaction_code;
        $subscription->subscription_status = $subscriptionstatus;
        $subscription->subscription_endtime = Carbon::now()->addMonths(1);
        $subscription->save();

        return view('subscriptions.success');
    } else {
        $subscription = Subscription::findOrFail($user_id);

        $data = ['transaction_code '=> $request->transaction_code, 'subscription_status '=> $subscriptionstatus, 'subscription_endtime'=> Carbon::now()->addMonths(1)];

        $subscription ->where('user_id', $user_id)->update($data);
        return view('subscriptions.success');
    }
}
0 голосов
/ 11 января 2020

Просто удалите $ user_id из подписи метода

//...
public function store(Request $request)
//...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...