PHP ActiveRecord - 无法在模型中找到关联

时间:2012-03-12 09:57:41

标签: php codeigniter orm phpactiverecord

我正在使用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

我正在尝试将一个事件与几个类别相关联,例如足球比赛事件可以包含“体育”,“家庭”和“有趣”类别。

我是否错过了一些基本的东西?

1 个答案:

答案 0 :(得分:1)

我无法测试所有内容,因为我没有数据库,我可以将代码转储到(并且没有任何测试数据:)),但是您的代码与手册存在一些差异。 / p>

如果您查看此页面:http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through

你看到三张表,就像这样映射(我认为)

 Order        -> Category   
 Payment      -> Eventcategory 
 User         -> Event

Category有多个EventsEventcategory,就像Order在示例中有多个UsersPayment一样。相反,定义更基本(UserOrders

如果您定义了2个“通过”关系,则此示例只有Order类中的一个,user只有has_many。这是我认为你可能需要解决的一个很大的不同。

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

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

如果你有默认的命名方案,你不需要为明确命名它们而烦恼。

要修复它,我会从订单/用户/付款示例开始,检查它是否适合您,然后替换所有部分(仔细:)),这样它就成了您的代码。