我有一个数据透视表,我在其中存储学生和监护人关系,我在添加监护人之前先创建学生,因为学生和监护人有两个表,我使用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);
}