我正在使用Codeigniter2.1.0和spark to enable PHP ActiveRecord,我无法通过查找表创建多对多关联。每当我加载事件模型时,它都会失败,并显示“找不到模型事件中的关联事件类别”,这是一个ActiveRecord\HasManyThroughAssociationException
根据this topic,我已经尝试用this patch更新我的源代码,但没有效果。
我还关注了this thread,并根据那里给出的解决方案建立了我的联想。
我最终得到了以下sql:http://pastebin.com/ya65VWHC和以下模型:http://pastebin.com/XEDTb6KS
我正在尝试将一个事件与多个类别相关联,例如,足球比赛事件可以有“运动”、“家庭”和“乐趣”类别。
我错过了什么基本的东西吗?
发布于 2012-03-13 14:58:22
我不能测试所有东西,因为我没有一个数据库可以将您的代码转储到其中(也没有任何测试数据: ),但是您的代码与手册有一些不同。
如果你看一下这个页面:http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through
你会看到三张表,就像这样(我想)
Order -> Category
Payment -> Eventcategory
User -> Event一个Category通过Eventcategory有多个Events,就像示例中的Order通过Payment有多个Users一样。另一种方式是更基本的定义( User有Orders)
在您定义了2个“直通”关系的地方,这个示例在Order类中只有一个,留下的user只有一个has_many。这是一个很大的差异,我认为您可能需要解决。
此外,我对您在这部分中所做的foreign_key定义也不是很确定:
array('events', 'foreign_key' => 'event_id',
array('through' => 'eventcategories', 'foreign_key' => 'event_id')如果你已经有了默认的命名方案,你不需要费心去明确地命名它们。
为了修复它,我将从订单/用户/付款示例开始,检查它是否适用于您,然后替换所有部分(小心:),以便它成为您的代码。
https://stackoverflow.com/questions/9664929
复制相似问题