我知道这个问题已被问了一百万次,但我似乎找不到一个真正让我理解关系如何在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
目前,favorites
,ratings
和votes
都有一个主键,该主键由表中的每一列组成,以防止用户使用相同的{{1} }多次,用户多次投票submission_id
次等。我也相信这些字段是使用引用submission_id
和approved_submissions
的外键设置的,以防止存在无效数据在各自的领域。
使用DB模块,我可以访问和更新这些表没问题。我真的觉得ORM可能会提供一种更强大,更容易使用更少代码完成同样事情的方法。
您能说明我如何更新用户对users
投票的方式吗?用户删除收藏夹submission_id
?用户是否更改了特定submission_id
上的评分?
另外,我是否需要对数据库结构进行更改,或者它的方式是否正常?
答案 0 :(得分:1)
您可能正在寻找has_many_through关系。
因此,要添加新提交,您需要执行类似
的操作 $user->add('submissions', $submission);
并删除
$user->remove('submissions', $submission);
您可能需要考虑重构数据库表和键名,这样您就不会进行大量配置。