了解Kohana ORM关系

时间:2011-03-28 13:15:37

标签: kohana kohana-3 kohana-orm

我知道这个问题已被问了一百万次,但我似乎找不到一个真正让我理解关系如何在Kohana的ORM模块中工作的问题。

我有一个包含5个表的数据库:

approved_submissions
   -submission_id
   -contents

favorites
   -user_id
   -submission_id

ratings
   -user_id
   -submission_id
   -rating

users
   -user_id

votes
   -user_id
   -submission_id
   -vote

目前,favoritesratingsvotes都有一个主键,该主键由表中的每一列组成,以防止用户使用相同的{{1} }多次,用户多次投票submission_id次等。我也相信这些字段是使用引用submission_idapproved_submissions的外键设置的,以防止存在无效数据在各自的领域。

使用DB模块,我可以访问和更新这些表没问题。我真的觉得ORM可能会提供一种更强大,更容易使用更少代码完成同样事情的方法。

您能说明我如何更新用户对users投票的方式吗?用户删除收藏夹submission_id?用户是否更改了特定submission_id上的评分?

另外,我是否需要对数据库结构进行更改,或者它的方式是否正常?

1 个答案:

答案 0 :(得分:1)

您可能正在寻找has_many_through关系。

因此,要添加新提交,您需要执行类似

的操作
 $user->add('submissions', $submission);

并删除

 $user->remove('submissions', $submission);

您可能需要考虑重构数据库表和键名,这样您就不会进行大量配置。