如何在Laravel 5.7中将数据插入多对多表

时间:2018-11-27 15:10:00

标签: php laravel insert many-to-many

我是Laravel新手 我有两张桌子的学生,课程。 他们的关系是多对多的,当我尝试添加新学生并将该学生分配到许多已经存在的课程时,它正确添加了新学生,但无法添加到表格student_course 我使用Laravel 5.7。

在学生模型中,我定义了功能课程

           public function courses()
    {
        return $this->belongsToMany('App\Course');
    }

在课程模型中,我添加

   public function student()
{
    return $this->belongsToMany('App\Student');
}

在studentController中

    public function store(Request $request , Courses courses)
{

    Student::createStudent($request->all());
    $courses = courses()->attach($request->courses);
    return redirect('/admin/student')->with('success','Has been added');
}

在学生create.blade中

  <select name='courses[]' style="width:220px;" multiple="multiple">
                        @foreach( $courses as $course )
                        <option value="{{$course->id}}">{{$course->name_courses}}</option>
                      @endforeach
                      </select>

选择许​​多课程。

发生的错误是课程是StudentController中的未定义变量。 我试图解决它,但我不知道如何解决。

1 个答案:

答案 0 :(得分:1)

这应该是您的存储功能:

public function store(Request $request,Courses courses){
    $student = Student::createStudent($request->all());
    $courses = Course::find($request->get('courses'));
    $student->courses()->attach($courses);
    return redirect('/admin/student')->with('success','Has been added'); 
}