我在 Laravel 中定义多态关系时遇到问题。我有Skill
在其他两个模型User
和Class
. 所以 User 可以有很多技能,Class 可以有很多技能,但是技能之间没有重叠。
所以我创建了一个skills_assoc
表skill_id
(这是技能表的外键)
我无法正确设置 Class -> Skills() 函数来获取与课程相关的技能。
桌子skills
- ID
- 姓名
桌子skills_assoc
- ID
- Skill_id - 技能表的外键
- 熟练的_id
- 技能型
我的Class
技能()定义是
return $this
->morphedByMany(Skill::class, 'skillable', 'skills_assoc', 'skill_id', 'skill_id', 'skill_id');
问题是当我想获取$class->skills
并打印查询
时,$class->skills()->toSql()
我收到了这个奇怪的查询
select * from `skills`
inner join `skills_assoc` on `skills`.`id` = `skills_assoc`.`skill_id`
where `skills_assoc`.`skill_id` is null and `skills_assoc`.`skillable_type` = ?
where `skills_assoc`.`skill_id` is null
看起来很奇怪,我的收藏是空的,不知道为什么。
当我错了,请指出,提前谢谢。