Laravel |数据透视表,表名冲突

时间:2018-02-16 20:33:45

标签: php mysql laravel eloquent lumen

我正在尝试创建一个数据透视表,以便将教师链接到主题,然后将教师链接到主题。

我有像这样的教师表架构。

$ autoreconf
$ ./configure ...

像这样的数据透视表模式。

| id | first_name | last_name | created_at | updated_at

主题表架构如下。

| id | teacher_id | subject_id

这是一个非常基本的桌面结构,而我试图弄清楚这些细节。

我在我的| id | name | created_at | updated_at 模型中有这个代码,它扩展了Eloquents Model。

教师可以分配多个科目。

Teacher.php

这是我得到的错误..

  

语法错误或访问冲突:1066不唯一的表/别名:'teacher_subjects'(SQL:select teacher_subjects。*,teacher_subjects.teacher_id as pivot_teacher_id,teacher_subjects.id as pivot_id from teacher_subjects inner join teacher_subjects on teacher_subjects.id = teacher_subjects。 id,其中teacher_subjects.teacher_id在(1))

对我而言似乎无论出于何种原因,return $this->belongsToMany('App\Models\TeacherSubject', 'teacher_subjects', 'teacher_id', 'id'); 都将两个表重命名为同名,这让我感到困惑。

有谁可以指出我出错的地方?

1 个答案:

答案 0 :(得分:3)

您的数据透视表不需要模型,laravel会为您处理关系。只需使用:

教师模型

 $this->belongsToMany(Subject::class, 'teacher_subjects');

主题模型

 $this->belongsToMany(Teacher::class, 'teacher_subjects');