我正在使用Codeigniter 2.1.0以及spark to enable PHP ActiveRecord,我无法通过查找表创建多对多关联。 每当我加载事件模型时,它都会失败并显示“无法在模型事件中找到关联事件类别”,这是一个ActiveRecord \ HasManyThroughAssociationException
根据this topic我已尝试使用this patch更新我的来源,但效果不佳。
我也跟着this thread并根据那里给出的解决方案建立了联系。
我最终得到了以下sql:http://pastebin.com/ya65VWHC 以及以下模型:http://pastebin.com/XEDTb6KS
我正在尝试将一个事件与几个类别相关联,例如足球比赛事件可以包含“体育”,“家庭”和“有趣”类别。
我是否错过了一些基本的东西?
答案 0 :(得分:1)
我无法测试所有内容,因为我没有数据库,我可以将代码转储到(并且没有任何测试数据:)),但是您的代码与手册存在一些差异。 / p>
如果您查看此页面: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')
如果你有默认的命名方案,你不需要为明确命名它们而烦恼。
要修复它,我会从订单/用户/付款示例开始,检查它是否适合您,然后替换所有部分(仔细:)),这样它就成了您的代码。