首页 > 解决方案 > 如果用户在 Laravel 中注册事件,如何执行功能从数据透视表中扣除可用性数量

问题描述

我有 3 张桌子user eventevent_user

我正在创建一个具有配额限制的事件注册,一旦配额已满,其他用户将无法注册该特定事件。但问题是我为此创建了 MM 关系。并且event_user只存储user_idand event_id。一旦用户成功注册到活动中,我如何访问event表格并扣除?event_availability

  public function storeEvent(Request $request)
    {
    //deducts the event_availability

       $user = User::find(Auth::user()->id);
       $user->events()->syncWithoutDetaching([$request->event_id]);
       return redirect()->route('user.events');

事件数据库

数据透视表

Event Model

public function users()
    {
        return $this->belongsToMany(User::class,'event_user','event_id','user_id');
    }

标签: laraveleloquent

解决方案


正如您event_id从请求中获得的那样,您可以从中更新

 $user = User::find(Auth::user()->id);
 $user->events()->syncWithoutDetaching([$request->event_id]);
 $event = Event::find($request->event_id);
 $event->update([
     'event_availability' => (int)$event->event_availability-1
 ]);
 return redirect()->route('user.events');

推荐阅读