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时,为什么要将它传递给该方法?