Php 如何将数据从一个模型的显示页插入到laravel中的透视表中

Php 如何将数据从一个模型的显示页插入到laravel中的透视表中,php,laravel,eloquent,Php,Laravel,Eloquent,我试图用当前用户的用户id和用户正在查看的事件的事件id填充透视表。但单击“提交”后,页面显示由于不活动,该页面已过期。请刷新并重试。这是我的密码: EventController.php public function index() { $events = DB::table('events')->get(); return view('events.index', ['events'=>$events]); }

我试图用当前用户的用户id和用户正在查看的事件的事件id填充透视表。但单击“提交”后,页面显示由于不活动,该页面已过期。请刷新并重试。这是我的密码:

EventController.php

    public function index()
    {
        $events = DB::table('events')->get();
        return view('events.index', ['events'=>$events]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('events.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $event = new Event;
        $event->title = $request->eventTitle;
        $event->location = $request->eventLocation;
        $event->date = $request->eventDate;
        $event->time = $request->eventTime;

        $event->save();
        Session::flash('success', 'Event created successfully');
        return redirect()->route('events.create');
    }


    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $event = Event::find($id);
        return view('events.show', ['event'=>$event]);
    }
    public function store(Request $request)
{
    $event_id = $request->id;
    $user_id = $request->Auth::user()->id;

    DB::table('event_user')->insert([
        ['event_id' => $event_id],
        ['user_id' => $user_id]
    ]);
}
EventsUserController.php

    public function index()
    {
        $events = DB::table('events')->get();
        return view('events.index', ['events'=>$events]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('events.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $event = new Event;
        $event->title = $request->eventTitle;
        $event->location = $request->eventLocation;
        $event->date = $request->eventDate;
        $event->time = $request->eventTime;

        $event->save();
        Session::flash('success', 'Event created successfully');
        return redirect()->route('events.create');
    }


    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $event = Event::find($id);
        return view('events.show', ['event'=>$event]);
    }
    public function store(Request $request)
{
    $event_id = $request->id;
    $user_id = $request->Auth::user()->id;

    DB::table('event_user')->insert([
        ['event_id' => $event_id],
        ['user_id' => $user_id]
    ]);
}
以及要从中向透视表插入数据的显示页面

@extends('layouts.app')

@section('content')
    <div class="container">
    <h1>{{$event->title}}</h1>
    <p>Date: {{$event->date}}</p>
    <p>Time: {{$event->time}}</p>
    <p>Location: {{$event->location}}</p>
    @if(Auth::check())
<form method="POST" action="{{ route('eventsusers.store') }}">
    {{ csrf_field() }}
    <input type="hidden" name="event_id" value="{{ $event->id }}">
    <input type="hidden" name="user_id" value="{{ Auth::user()->id }}">
    <button type="submit" class="btn btn-success">Register</button>
</form>
@endif
    </div>
@endsection

我是拉雷维尔的新手。所以请温柔点。:)

csrf令牌会造成此类问题。有几种方法可以解决这个问题

  • 在表单中添加
    {{csrf_field()}
    ,如下面的代码所示,并检查发生了什么

    {{csrf_field()}} 登记
  • 您可以添加这样的隐藏字段

  • 您可以使用此方法更新VerifyCsrfToken中间件

    受保护的$except=[ “你的路线” ];


  • 现在,它在EventsUserControllerMoreOver中给了我“类名必须是有效对象或字符串”错误,您的事件id($request->id)在表单中的位置在哪里?大多数错误都是由我没有进行的导入以及我使用$request->Auth:。。不只是Auth::No,它给了我一个新的错误,我认为这与我创建数据库的方式有关。“SQLSTATE[HY000]:一般错误:1364字段“用户id”没有默认值(SQL:insert into
    event\u user
    event\u id
    )值(),(1))”尝试按顺序解决问题,它显示此错误。因为当您尝试以其他方式插入时,用户id没有值DB::table('event_user')->insert(['event_id'=>$request->event_id',user_id'=>$request->user_id]);