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

Posted

技术标签:

【中文标题】PHP ActiveRecord - 在模型中找不到关联【英文标题】:PHP ActiveRecord - Could not find the association in model 【发布时间】:2012-03-12 09:57:40 【问题描述】:

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

我试图将一个事件与多个类别相关联,例如足球比赛事件可能具有“体育”、“家庭”和“娱乐”等类别。

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

【问题讨论】:

我可以根据此处phpactiverecord.org/projects/main/wiki/… 的文档添加,我似乎无法理解我做错了什么。 很难获得完整的图片,同时需要单击槽到 pastebin 和您发布的所有链接,所以不是答案,但我要寻找的一点是:它是否适用于复数? (类别/类别)?你能给自己举个简单的例子吗? @Nanne 嗨,我试过复数/单数,但不幸的是它不是。 (我对您的示例语句感到有些困惑,您希望我编写一个示例并将其发布在此处,还是仅将其用于我自己的复数/单数测试?)谢谢您看一下=)跨度> 好吧,两个,bot,如果你有一个简单的方法在这里给我们问题而不必点击到 pastebin,讨论这个问题更容易:) 【参考方案1】:

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

如果您查看此页面: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')

如果您有默认命名方案,则无需费心显式命名它们。

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

【讨论】:

我花了整整一周的时间试图弄清楚这一点,phpar 可以处理简单的模型内容,但不能处理更复杂的内容。谢谢你的建议,我决定从头开始设置phpar,就在那时我注意到了... facepalm scratches head 我已经加载了 CI 自己的活动记录并由于某种原因,这与 ppar 的基本用法不冲突。嗯,嗯,谢谢,我现在要去办公室跳舞;p 顺便说一句,你可能在外键方面是对的,但是现在一切正常,所以我不会碰它;) 听起来好像又走上了正轨,祝你跳舞好运:)

以上是关于PHP ActiveRecord - 在模型中找不到关联的主要内容,如果未能解决你的问题,请参考以下文章

MinGW gcc 在 /local/include 中找不到头文件

ActiveRecord & PHP:定义两个模型之间不同关联的最佳方式

Xcode Archive 在子项目中找不到头文件

脑洞题目 - 改自从一组无序数组中找不存在的最小正整数

在 Rails 中找不到关联问题

maven-shade-plugin 错误:在“资源”的 org.apache.maven.plugins.shade.resource.ManifestResourceTransformer 中找不