PHP ActiveRecord-在模型中找不到关联


PHP ActiveRecord - Could not find the association in model

我使用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有多个EventsEventcategory,就像本例中Order有几个UsersPayment一样。另一种方式被定义为更基本的(User具有Orders

在定义了2个"到"关系的情况下,本例在Order类中只有一个关系,而user只剩下一个has_many。这是一个很大的区别,我认为你可能需要解决。

此外,我真的不确定你在这部分中所做的foreign_key定义:

array('events', 'foreign_key' => 'event_id',
              array('through' => 'eventcategories', 'foreign_key' => 'event_id')

如果你有默认的命名方案,你就不需要为它们显式命名了。

要修复它,我将从订单/用户/支付示例开始,检查它是否适用于您,然后更换所有部件(小心:)),使其成为您的代码。