首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP ActiveRecord -无法在模型中找到关联

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

Stack Overflow用户
提问于 2012-03-12 17:57:41
回答 1查看 1K关注 0票数 1

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

我正在尝试将一个事件与多个类别相关联,例如,足球比赛事件可以有“运动”、“家庭”和“乐趣”类别。

我错过了什么基本的东西吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 14:58:22

我不能测试所有东西,因为我没有一个数据库可以将您的代码转储到其中(也没有任何测试数据: ),但是您的代码与手册有一些不同。

如果你看一下这个页面:http://www.phpactiverecord.org/projects/main/wiki/Associations#has_many_through

你会看到三张表,就像这样(我想)

代码语言:javascript
复制
 Order        -> Category   
 Payment      -> Eventcategory 
 User         -> Event

一个Category通过Eventcategory有多个Events,就像示例中的Order通过Payment有多个Users一样。另一种方式是更基本的定义( UserOrders)

在您定义了2个“直通”关系的地方,这个示例在Order类中只有一个,留下的user只有一个has_many。这是一个很大的差异,我认为您可能需要解决。

此外,我对您在这部分中所做的foreign_key定义也不是很确定:

代码语言:javascript
复制
array('events', 'foreign_key' => 'event_id',
              array('through' => 'eventcategories', 'foreign_key' => 'event_id')

如果你已经有了默认的命名方案,你不需要费心去明确地命名它们。

为了修复它,我将从订单/用户/付款示例开始,检查它是否适用于您,然后替换所有部分(小心:),以便它成为您的代码。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9664929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档