试图为我的多对多关系添加数据



我有一个数据透视表,我在其中存储学生和监护人关系,我在添加监护人之前先创建学生,因为学生和监护人有两个表,我使用id与它们关联。当我创建一个新的守护者时,一切都很好,但问题是当我试图将一个旧的守护者与一个新学生合并时,我称我的模型为"守护者";getStudent"我得到错误";调用字符串"上的成员函数getStudent((;

//卫士

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

//学生模型

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

//控制器

if (isset($_POST['merge'])) {
$student = Student::find($id);
$guardian =  $req->input('parent_id');
dd($guardian->getStudent()->attach($student->id));
}

我可以获得两个Id,但如何在没有错误的情况下保存到我的轴心?

如果从request对象调用getStudent()函数,则可以从Guardian模态实例调用该函数,因此

你的代码应该看起来像

if (isset($_POST['merge'])) {
$student = Student::find($id);
$guardian =  Guardian::find($req->input('parent_id'));
dd($guardian->getStudent()->attach($student->id));
}

您应该这样做:

if (isset($_POST['merge'])) {
// $student = Student::find($id);
$guardian = Guardian::find($req->input('parent_id'));
$guardian->getStudent()->attach($id);
}

最新更新