我使用Codeigniter 2.1.0和spark来启用PHP ActiveRecord,但我无法通过查找表创建多对多关联。每当我加载事件模型时,它都会失败,并显示"在模型事件中找不到关联事件类别",这是一个ActiveRecord''HasManyThroughAssociationException
根据这个主题,我尝试用这个补丁更新我的源代码,但没有效果。
我也遵循了这个线索,并基于那里给出的解决方案建立了我的关联。
我最终得到了以下sql:http://pastebin.com/ya65VWHC以及以下型号:http://pastebin.com/XEDTb6KS
我试图将一个事件与几个类别联系起来,例如,一个足球比赛事件可以有"体育"、"家庭"answers"娱乐"类别。
我错过了一些基本的东西吗?
我无法测试所有内容,因为我没有可以将您的代码转储到的数据库(也没有任何测试数据:),但您的代码与手册有一些不同。
如果您查看此页面:http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through
你看到三张表,那张地图是这样的(我想)
Order -> Category
Payment -> Eventcategory
User -> Event
Category
有多个Events
到Eventcategory
,就像本例中Order
有几个Users
到Payment
一样。另一种方式被定义为更基本的(User
具有Orders
)
在定义了2个"到"关系的情况下,本例在Order
类中只有一个关系,而user
只剩下一个has_many
。这是一个很大的区别,我认为你可能需要解决。
此外,我真的不确定你在这部分中所做的foreign_key
定义:
array('events', 'foreign_key' => 'event_id',
array('through' => 'eventcategories', 'foreign_key' => 'event_id')
如果你有默认的命名方案,你就不需要为它们显式命名了。
要修复它,我将从订单/用户/支付示例开始,检查它是否适用于您,然后更换所有部件(小心:)),使其成为您的代码。