1

この質問が何百万回も聞かれていることは知っていますが、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

現在、favoritesratings、およびvotesテーブル内のすべての列で構成される主キーを持っているため、ユーザーが同じものをsubmission_id複数回お気に入りしたり、ユーザーが同じものに複数回投票したりするのを防ぐことができますsubmission_id。また、これらのフィールドは次を使用して設定されていると思いますを参照する外部キーとapproved_submissionsusersそれぞれのフィールドに無効なデータが存在しないようにします。

DB モジュールを使用すると、これらのテーブルに問題なくアクセスして更新できます。ORM は、より少ないコードで同じことを達成するための、より強力でアクセスしやすい方法を提供してくれるのではないかと私は本当に感じています。

に投票しているユーザーを更新する方法を示してもらえますsubmission_idか? ユーザーがお気に入りを削除しsubmission_idますか? 特定の評価を変更するsubmission_idユーザー

また、データベース構造を変更する必要がありますか、それともそのままでよいですか?

4

1 に答える 1

1

おそらくhas_many_through関係を探しているでしょう。

したがって、新しい提出を追加するには、次のようにします

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

そして削除する

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

データベース テーブルとキー名を再構築して、多くの構成を行うことを避けることを検討することをお勧めします。

于 2011-03-29T02:38:40.187 に答える