如何自动更新数据透视表值

时间:2017-08-29 14:35:18

标签: laravel eloquent pivot-table

我有两个单独的表studentstutors。我还设置了包含两个值students_tutorsstudents_studentid的数据透视表tutors_tutid。在事物的流程中,客户希望在添加导师或稍后编辑导师时将导师分配给学生,反之亦然。因此,学生可能有很多导师,导师可能有很多学生。现在,我希望在发生这样的选择时自动更新数据透视表值。可以一次性分配多个辅导/学生。我在数据透视表上自动更新有困难。我对Laravel很新。任何人都可以建议如何使用它以及使用什么代码以及在何处更新数据透视值并在视图中显示。

我的学生add.blade.php

<select name="tutid" id="tutors" multiple>
    @foreach($tutors as $tutor)
        <option value="{{$tutor->tutid}}">{{$tutor->name}}</option>
    @endforeach
</select>

我的Student型号:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Student extends Model
{
    protected $primaryKey = 'studentid';

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function Tutors()
    {
        return $this->belongsToMany(Tutors::class);
    }

    public function Invoices()
    {
        return $this->belongsToMany(Invoices::class);
    }
}

我的Tutor型号:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Tutor extends Model
{
    protected $guarded = [];

    protected $primaryKey = 'tutid';

    public function user()
    {
        return $this->belongsTo(User::class);
    }

    public function Students()
    {
        return $this->belongsToMany(Students::class);
    }
}

我的学生控制器add()方法:

public function add(Student $student, Tutor $tutor)
{
    $students = Student::all();

    $tutors = Tutor::all();

    return view('students.add', compact('students', 'tutors'));
}

1 个答案:

答案 0 :(得分:0)

在这里你可以做什么: 遍历所有学生ID或导师ID并分配它们, 例如,如果我们想要将多名学生分配给导师:

$tutor = Tutor::find($id);
foreach($students_id as $student_id){

    $tutor->students()->attach($student_id);

}

请注意,您必须在教师模型中有关系(学生):

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

为学生做同样的操作!