2011-03-28 93 views
1

我知道这个问题已经被问过一百万次了,但我似乎找不到能真正让我很好地理解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有一个主键由表中的每一列,以防止用户加入最爱相同submission_id多次,用户在同一个submission_id上多次投票等。我也相信这些字段是使用参考approved_submissionsusers的外键来设置的,以防止各个字段中存在无效数据。

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

你能演示我如何更新用户在submission_id上的投票吗?用户删除最喜欢的submission_id?用户在特定的submission_id上更改其评分?

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

回答

1

您可能正在寻找has_many_through的关系。

所以要加一个新的提交,你会做这样的事情

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

,并删除

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

你可能要考虑这样你不重组你的数据库表和键名最终会做很多配置。