我正在尝试创建一个数据透视表,以便将教师链接到主题,然后将教师链接到主题。
我有像这样的教师表架构。
$ 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');
都将两个表重命名为同名,这让我感到困惑。
有谁可以指出我出错的地方?
答案 0 :(得分:3)
您的数据透视表不需要模型,laravel会为您处理关系。只需使用:
教师模型
$this->belongsToMany(Subject::class, 'teacher_subjects');
主题模型
$this->belongsToMany(Teacher::class, 'teacher_subjects');