Laravel 如何在一个方法中使用create和update?

Laravel 如何在一个方法中使用create和update?,laravel,Laravel,我有一个带有订阅状态字段的订阅表。当用户为订阅付费时,他输入一个用于验证的交易代码。然后系统检查用户是否有订阅。如果他没有任何订阅,他将被添加到数据库中。如果他有订阅,系统将编辑他的记录 这是我正在使用的代码: public function store(Request $request, $user_id) { $transaction_code = $request->transaction_code; $email = Auth::user()->email;

我有一个带有订阅状态字段的订阅表。当用户为订阅付费时,他输入一个用于验证的交易代码。然后系统检查用户是否有订阅。如果他没有任何订阅,他将被添加到数据库中。如果他有订阅,系统将编辑他的记录

这是我正在使用的代码:

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个


只需从方法签名中删除$user\u id即可

//...
public function store(Request $request)
//...
不要将$user_id作为函数的参数传递。您可以通过auth::user->id获取auth user。 此外,您需要对代码进行的更改很少

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');
    }
}
当您只是从Auth::user获取$user\u id时,为什么要将它传递给该方法?