TP5的多对多关联的问题
TP5的多对多关联
在AModel内建立与用户的多对多关联
controller内查找数据
然后在前端调用模板的循环方法输出
循环内调用多对多方法users
结果提示
一开始以为是因为数据不同步,中间表有的数据A表没有,或者A表有的数据中间表没有。所以
1.删了测试数据还是一样的问题,
2.随后又尝试重新写belongstomany方法,因为刚开始的中间表参数没加前缀,还是报错,
3.查看中间表model,没继承pivot,还是报错,
ok,第二天再看
第二天重走一遍还是错,无奈只能看框加底层怎么写的
发现报错的属性id是从这边开始出现的
直接从belongsToMany方法跳转到BelongsToMany.php文件找到157行
第155行会自动获取A表的主键默认是id,但是重点来了,A表是没有id这个字段的
主键是a_id。这不是坑爹吗
在Amodel里设置
问题解决。估计TP5的作者也不会想到主键不是id的情况吧。
最后画张图
其中的关联键A的id和user的id,没设置的话默认都是id,最后说一句,定义model不要偷懒一定要proteced $pk,主键不要用奇奇怪怪的东西